From 606fb98afc36ab48c9dccff11bbdcabd9fda082c Mon Sep 17 00:00:00 2001 From: Haze Weathers Date: Thu, 27 Feb 2025 04:23:32 -0500 Subject: [PATCH 1/4] variable waterpole spinning --- objects/canny_cat.gd | 7 +++++-- objects/canny_cat.tscn | 4 ++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/objects/canny_cat.gd b/objects/canny_cat.gd index ee9c3d5..304340b 100644 --- a/objects/canny_cat.gd +++ b/objects/canny_cat.gd @@ -168,13 +168,15 @@ var _pole_stored_speed: float = 0.0 func _start_pole_spin() -> void: _pole_stored_speed = flatten_vector(velocity).length() velocity = Vector3.ZERO + floor_snap_length = 0.0 var pole_xz = flatten_vector(_attached_pole.global_position) var self_xz = flatten_vector(global_position) _pole_angle = Vector3.FORWARD.angle_to(self_xz - pole_xz) func _process_pole_spin(delta: float) -> void: + var speed_factor = inverse_lerp(0.0, power_scale, _pole_stored_speed) # rise - global_position.y += _attached_pole.rise_speed * delta + global_position.y += lerpf(0.0, _attached_pole.rise_speed, speed_factor) * delta global_position.y = clampf( global_position.y, _attached_pole.global_position.y, @@ -182,7 +184,7 @@ func _process_pole_spin(delta: float) -> void: ) # spin - _pole_angle += _attached_pole.spin_speed * delta + _pole_angle += lerpf(0.0, _attached_pole.spin_speed, speed_factor) * delta var pole_xz = flatten_vector(_attached_pole.global_position) var self_dir = Vector3.FORWARD.rotated(Vector3.UP, _pole_angle) var self_xz = pole_xz + self_dir * _attached_pole.offset @@ -194,6 +196,7 @@ func _end_pole_spin() -> void: var impulse = Vector3.FORWARD.rotated(Vector3.UP, _pole_angle) * _pole_stored_speed velocity.x = impulse.x velocity.z = impulse.z + floor_snap_length = 0.1 #endregion diff --git a/objects/canny_cat.tscn b/objects/canny_cat.tscn index 019bfee..f65f169 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="_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_physics_processing" from="StateChart/Root/Moving" to="." method="_slow_to_stop"] +[connection signal="state_physics_processing" from="StateChart/Root/Moving" to="." method="_bounce_on_walls"] [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"] From c18a7746f715f63eee5041fa9e00c534a0285aed Mon Sep 17 00:00:00 2001 From: Haze Weathers Date: Thu, 27 Feb 2025 04:54:27 -0500 Subject: [PATCH 2/4] update to godot 4.4 --- addons/godot_state_charts/all_of_guard.gd.uid | 1 + .../godot_state_charts/animation_player_state.gd.uid | 1 + .../godot_state_charts/animation_tree_state.gd.uid | 1 + addons/godot_state_charts/any_of_guard.gd.uid | 1 + addons/godot_state_charts/atomic_state.gd.uid | 1 + addons/godot_state_charts/compound_state.gd.uid | 1 + addons/godot_state_charts/debug_util.gd.uid | 1 + addons/godot_state_charts/expression_guard.gd.uid | 1 + addons/godot_state_charts/expression_util.gd.uid | 1 + addons/godot_state_charts/godot_state_charts.gd.uid | 1 + addons/godot_state_charts/guard.gd.uid | 1 + addons/godot_state_charts/history_state.gd.uid | 1 + addons/godot_state_charts/not_guard.gd.uid | 1 + addons/godot_state_charts/parallel_state.gd.uid | 1 + addons/godot_state_charts/saved_state.gd.uid | 1 + addons/godot_state_charts/state_chart.gd.uid | 1 + addons/godot_state_charts/state_chart_state.gd.uid | 1 + .../godot_state_charts/state_is_active_guard.gd.uid | 1 + addons/godot_state_charts/transition.gd.uid | 1 + .../utilities/debugger_history.gd.uid | 1 + .../utilities/editor_debugger/editor_debugger.gd.uid | 1 + .../utilities/editor_debugger/editor_debugger.tscn | 2 +- .../editor_debugger/editor_debugger_message.gd.uid | 1 + .../editor_debugger/editor_debugger_plugin.gd.uid | 1 + .../editor_debugger/editor_debugger_remote.gd.uid | 1 + .../editor_debugger_settings_propagator.gd.uid | 1 + .../editor_debugger_state_info.gd.uid | 1 + .../utilities/editor_sidebar.gd.uid | 1 + .../godot_state_charts/utilities/editor_sidebar.tscn | 2 +- .../utilities/event_editor/event_editor.gd.uid | 1 + .../event_editor/event_inspector_plugin.gd.uid | 1 + .../utilities/event_refactor/event_refactor.gd.uid | 1 + .../utilities/event_refactor/event_refactor.tscn | 2 +- .../godot_state_charts/utilities/ring_buffer.gd.uid | 1 + .../utilities/state_chart_debugger.gd.uid | 1 + .../utilities/state_chart_debugger.tscn | 2 +- .../utilities/state_chart_util.gd.uid | 1 + assets/models/enemies/boney.glb.import | 1 + assets/models/tiles/w1_walls.glb.import | 1 + assets/shaders/barber_shop.gdshader.uid | 1 + assets/shaders/confetti_spin.gdshader.uid | 1 + assets/shaders/flag.gdshader.uid | 1 + assets/shaders/horizontal_world_uv.gdshader.uid | 1 + autoloads/scene_manager.gd.uid | 1 + autoloads/scene_manager.tscn | 2 +- levels/level.gd.uid | 1 + levels/level_set.gd | 2 ++ levels/level_set.gd.uid | 1 + levels/w1/1_01.tscn | 6 +++--- objects/canny_cat.gd.uid | 1 + objects/canny_cat.tscn | 12 ++++++------ objects/goal_post.gd.uid | 1 + objects/goal_post.tscn | 6 +++--- objects/sand_pit.gd.uid | 1 + objects/sand_pit.tscn | 6 +++--- objects/skull.gd.uid | 1 + objects/skull.tscn | 2 +- objects/waterman_pole.gd.uid | 1 + objects/waterman_pole.tscn | 4 ++-- project.godot | 2 +- 60 files changed, 73 insertions(+), 24 deletions(-) create mode 100644 addons/godot_state_charts/all_of_guard.gd.uid create mode 100644 addons/godot_state_charts/animation_player_state.gd.uid create mode 100644 addons/godot_state_charts/animation_tree_state.gd.uid create mode 100644 addons/godot_state_charts/any_of_guard.gd.uid create mode 100644 addons/godot_state_charts/atomic_state.gd.uid create mode 100644 addons/godot_state_charts/compound_state.gd.uid create mode 100644 addons/godot_state_charts/debug_util.gd.uid create mode 100644 addons/godot_state_charts/expression_guard.gd.uid create mode 100644 addons/godot_state_charts/expression_util.gd.uid create mode 100644 addons/godot_state_charts/godot_state_charts.gd.uid create mode 100644 addons/godot_state_charts/guard.gd.uid create mode 100644 addons/godot_state_charts/history_state.gd.uid create mode 100644 addons/godot_state_charts/not_guard.gd.uid create mode 100644 addons/godot_state_charts/parallel_state.gd.uid create mode 100644 addons/godot_state_charts/saved_state.gd.uid create mode 100644 addons/godot_state_charts/state_chart.gd.uid create mode 100644 addons/godot_state_charts/state_chart_state.gd.uid create mode 100644 addons/godot_state_charts/state_is_active_guard.gd.uid create mode 100644 addons/godot_state_charts/transition.gd.uid create mode 100644 addons/godot_state_charts/utilities/debugger_history.gd.uid create mode 100644 addons/godot_state_charts/utilities/editor_debugger/editor_debugger.gd.uid create mode 100644 addons/godot_state_charts/utilities/editor_debugger/editor_debugger_message.gd.uid create mode 100644 addons/godot_state_charts/utilities/editor_debugger/editor_debugger_plugin.gd.uid create mode 100644 addons/godot_state_charts/utilities/editor_debugger/editor_debugger_remote.gd.uid create mode 100644 addons/godot_state_charts/utilities/editor_debugger/editor_debugger_settings_propagator.gd.uid create mode 100644 addons/godot_state_charts/utilities/editor_debugger/editor_debugger_state_info.gd.uid create mode 100644 addons/godot_state_charts/utilities/editor_sidebar.gd.uid create mode 100644 addons/godot_state_charts/utilities/event_editor/event_editor.gd.uid create mode 100644 addons/godot_state_charts/utilities/event_editor/event_inspector_plugin.gd.uid create mode 100644 addons/godot_state_charts/utilities/event_refactor/event_refactor.gd.uid create mode 100644 addons/godot_state_charts/utilities/ring_buffer.gd.uid create mode 100644 addons/godot_state_charts/utilities/state_chart_debugger.gd.uid create mode 100644 addons/godot_state_charts/utilities/state_chart_util.gd.uid create mode 100644 assets/shaders/barber_shop.gdshader.uid create mode 100644 assets/shaders/confetti_spin.gdshader.uid create mode 100644 assets/shaders/flag.gdshader.uid create mode 100644 assets/shaders/horizontal_world_uv.gdshader.uid create mode 100644 autoloads/scene_manager.gd.uid create mode 100644 levels/level.gd.uid create mode 100644 levels/level_set.gd create mode 100644 levels/level_set.gd.uid create mode 100644 objects/canny_cat.gd.uid create mode 100644 objects/goal_post.gd.uid create mode 100644 objects/sand_pit.gd.uid create mode 100644 objects/skull.gd.uid create mode 100644 objects/waterman_pole.gd.uid diff --git a/addons/godot_state_charts/all_of_guard.gd.uid b/addons/godot_state_charts/all_of_guard.gd.uid new file mode 100644 index 0000000..2e7fa40 --- /dev/null +++ b/addons/godot_state_charts/all_of_guard.gd.uid @@ -0,0 +1 @@ +uid://2pwfgn2flltv diff --git a/addons/godot_state_charts/animation_player_state.gd.uid b/addons/godot_state_charts/animation_player_state.gd.uid new file mode 100644 index 0000000..6c30087 --- /dev/null +++ b/addons/godot_state_charts/animation_player_state.gd.uid @@ -0,0 +1 @@ +uid://crxj3l27001sa diff --git a/addons/godot_state_charts/animation_tree_state.gd.uid b/addons/godot_state_charts/animation_tree_state.gd.uid new file mode 100644 index 0000000..cf74d28 --- /dev/null +++ b/addons/godot_state_charts/animation_tree_state.gd.uid @@ -0,0 +1 @@ +uid://kp3w6nr5fvhg diff --git a/addons/godot_state_charts/any_of_guard.gd.uid b/addons/godot_state_charts/any_of_guard.gd.uid new file mode 100644 index 0000000..f9a5c67 --- /dev/null +++ b/addons/godot_state_charts/any_of_guard.gd.uid @@ -0,0 +1 @@ +uid://c0dlakdcpci0o diff --git a/addons/godot_state_charts/atomic_state.gd.uid b/addons/godot_state_charts/atomic_state.gd.uid new file mode 100644 index 0000000..5985b1b --- /dev/null +++ b/addons/godot_state_charts/atomic_state.gd.uid @@ -0,0 +1 @@ +uid://kctk5uejlaoh diff --git a/addons/godot_state_charts/compound_state.gd.uid b/addons/godot_state_charts/compound_state.gd.uid new file mode 100644 index 0000000..6f7ef93 --- /dev/null +++ b/addons/godot_state_charts/compound_state.gd.uid @@ -0,0 +1 @@ +uid://1csmnvxpk1j3 diff --git a/addons/godot_state_charts/debug_util.gd.uid b/addons/godot_state_charts/debug_util.gd.uid new file mode 100644 index 0000000..004a522 --- /dev/null +++ b/addons/godot_state_charts/debug_util.gd.uid @@ -0,0 +1 @@ +uid://1x6hwwkl021m diff --git a/addons/godot_state_charts/expression_guard.gd.uid b/addons/godot_state_charts/expression_guard.gd.uid new file mode 100644 index 0000000..fb14e4e --- /dev/null +++ b/addons/godot_state_charts/expression_guard.gd.uid @@ -0,0 +1 @@ +uid://m32s76pjucg7 diff --git a/addons/godot_state_charts/expression_util.gd.uid b/addons/godot_state_charts/expression_util.gd.uid new file mode 100644 index 0000000..f9995f6 --- /dev/null +++ b/addons/godot_state_charts/expression_util.gd.uid @@ -0,0 +1 @@ +uid://4f7muthq014i diff --git a/addons/godot_state_charts/godot_state_charts.gd.uid b/addons/godot_state_charts/godot_state_charts.gd.uid new file mode 100644 index 0000000..2bfdada --- /dev/null +++ b/addons/godot_state_charts/godot_state_charts.gd.uid @@ -0,0 +1 @@ +uid://cje5ay4xktxgv diff --git a/addons/godot_state_charts/guard.gd.uid b/addons/godot_state_charts/guard.gd.uid new file mode 100644 index 0000000..1675437 --- /dev/null +++ b/addons/godot_state_charts/guard.gd.uid @@ -0,0 +1 @@ +uid://7byord465lig diff --git a/addons/godot_state_charts/history_state.gd.uid b/addons/godot_state_charts/history_state.gd.uid new file mode 100644 index 0000000..5a88c26 --- /dev/null +++ b/addons/godot_state_charts/history_state.gd.uid @@ -0,0 +1 @@ +uid://2weu7mtvi6em diff --git a/addons/godot_state_charts/not_guard.gd.uid b/addons/godot_state_charts/not_guard.gd.uid new file mode 100644 index 0000000..7f7d37e --- /dev/null +++ b/addons/godot_state_charts/not_guard.gd.uid @@ -0,0 +1 @@ +uid://7wsknicmgrql diff --git a/addons/godot_state_charts/parallel_state.gd.uid b/addons/godot_state_charts/parallel_state.gd.uid new file mode 100644 index 0000000..4342cf5 --- /dev/null +++ b/addons/godot_state_charts/parallel_state.gd.uid @@ -0,0 +1 @@ +uid://baiit8725r4cs diff --git a/addons/godot_state_charts/saved_state.gd.uid b/addons/godot_state_charts/saved_state.gd.uid new file mode 100644 index 0000000..640a02c --- /dev/null +++ b/addons/godot_state_charts/saved_state.gd.uid @@ -0,0 +1 @@ +uid://buwudikx3c5vx diff --git a/addons/godot_state_charts/state_chart.gd.uid b/addons/godot_state_charts/state_chart.gd.uid new file mode 100644 index 0000000..bb07f68 --- /dev/null +++ b/addons/godot_state_charts/state_chart.gd.uid @@ -0,0 +1 @@ +uid://dsjiox4ahsvqn diff --git a/addons/godot_state_charts/state_chart_state.gd.uid b/addons/godot_state_charts/state_chart_state.gd.uid new file mode 100644 index 0000000..a00d66e --- /dev/null +++ b/addons/godot_state_charts/state_chart_state.gd.uid @@ -0,0 +1 @@ +uid://dbbk2a6bon8v0 diff --git a/addons/godot_state_charts/state_is_active_guard.gd.uid b/addons/godot_state_charts/state_is_active_guard.gd.uid new file mode 100644 index 0000000..dbe0391 --- /dev/null +++ b/addons/godot_state_charts/state_is_active_guard.gd.uid @@ -0,0 +1 @@ +uid://bq013yyrrbvnm diff --git a/addons/godot_state_charts/transition.gd.uid b/addons/godot_state_charts/transition.gd.uid new file mode 100644 index 0000000..dc75ad2 --- /dev/null +++ b/addons/godot_state_charts/transition.gd.uid @@ -0,0 +1 @@ +uid://clasig0wood63 diff --git a/addons/godot_state_charts/utilities/debugger_history.gd.uid b/addons/godot_state_charts/utilities/debugger_history.gd.uid new file mode 100644 index 0000000..05ab9be --- /dev/null +++ b/addons/godot_state_charts/utilities/debugger_history.gd.uid @@ -0,0 +1 @@ +uid://bde4yjgbmjn5y diff --git a/addons/godot_state_charts/utilities/editor_debugger/editor_debugger.gd.uid b/addons/godot_state_charts/utilities/editor_debugger/editor_debugger.gd.uid new file mode 100644 index 0000000..9a1830e --- /dev/null +++ b/addons/godot_state_charts/utilities/editor_debugger/editor_debugger.gd.uid @@ -0,0 +1 @@ +uid://fkbjjsmb60j6 diff --git a/addons/godot_state_charts/utilities/editor_debugger/editor_debugger.tscn b/addons/godot_state_charts/utilities/editor_debugger/editor_debugger.tscn index f52bd05..6e50759 100644 --- a/addons/godot_state_charts/utilities/editor_debugger/editor_debugger.tscn +++ b/addons/godot_state_charts/utilities/editor_debugger/editor_debugger.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=2 format=3 uid="uid://donfbhh5giyfy"] -[ext_resource type="Script" path="res://addons/godot_state_charts/utilities/editor_debugger/editor_debugger.gd" id="1_ia1de"] +[ext_resource type="Script" uid="uid://fkbjjsmb60j6" path="res://addons/godot_state_charts/utilities/editor_debugger/editor_debugger.gd" id="1_ia1de"] [node name="State Charts" type="VBoxContainer"] anchors_preset = 15 diff --git a/addons/godot_state_charts/utilities/editor_debugger/editor_debugger_message.gd.uid b/addons/godot_state_charts/utilities/editor_debugger/editor_debugger_message.gd.uid new file mode 100644 index 0000000..b3fd848 --- /dev/null +++ b/addons/godot_state_charts/utilities/editor_debugger/editor_debugger_message.gd.uid @@ -0,0 +1 @@ +uid://dvu74pnu5lwbq diff --git a/addons/godot_state_charts/utilities/editor_debugger/editor_debugger_plugin.gd.uid b/addons/godot_state_charts/utilities/editor_debugger/editor_debugger_plugin.gd.uid new file mode 100644 index 0000000..40a6030 --- /dev/null +++ b/addons/godot_state_charts/utilities/editor_debugger/editor_debugger_plugin.gd.uid @@ -0,0 +1 @@ +uid://dyc5byyhwbnr0 diff --git a/addons/godot_state_charts/utilities/editor_debugger/editor_debugger_remote.gd.uid b/addons/godot_state_charts/utilities/editor_debugger/editor_debugger_remote.gd.uid new file mode 100644 index 0000000..390dd4e --- /dev/null +++ b/addons/godot_state_charts/utilities/editor_debugger/editor_debugger_remote.gd.uid @@ -0,0 +1 @@ +uid://c7i62ol7vk1se diff --git a/addons/godot_state_charts/utilities/editor_debugger/editor_debugger_settings_propagator.gd.uid b/addons/godot_state_charts/utilities/editor_debugger/editor_debugger_settings_propagator.gd.uid new file mode 100644 index 0000000..f59f5da --- /dev/null +++ b/addons/godot_state_charts/utilities/editor_debugger/editor_debugger_settings_propagator.gd.uid @@ -0,0 +1 @@ +uid://ble5gksncbe7n diff --git a/addons/godot_state_charts/utilities/editor_debugger/editor_debugger_state_info.gd.uid b/addons/godot_state_charts/utilities/editor_debugger/editor_debugger_state_info.gd.uid new file mode 100644 index 0000000..fc7518a --- /dev/null +++ b/addons/godot_state_charts/utilities/editor_debugger/editor_debugger_state_info.gd.uid @@ -0,0 +1 @@ +uid://cm44gvum3wl0i diff --git a/addons/godot_state_charts/utilities/editor_sidebar.gd.uid b/addons/godot_state_charts/utilities/editor_sidebar.gd.uid new file mode 100644 index 0000000..4bd9b5f --- /dev/null +++ b/addons/godot_state_charts/utilities/editor_sidebar.gd.uid @@ -0,0 +1 @@ +uid://cm6kei7xi15jq diff --git a/addons/godot_state_charts/utilities/editor_sidebar.tscn b/addons/godot_state_charts/utilities/editor_sidebar.tscn index dd631c2..34fc9a0 100644 --- a/addons/godot_state_charts/utilities/editor_sidebar.tscn +++ b/addons/godot_state_charts/utilities/editor_sidebar.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=8 format=3 uid="uid://bephgxrkhh3e2"] -[ext_resource type="Script" path="res://addons/godot_state_charts/utilities/editor_sidebar.gd" id="1_7kcy8"] +[ext_resource type="Script" uid="uid://cm6kei7xi15jq" path="res://addons/godot_state_charts/utilities/editor_sidebar.gd" id="1_7kcy8"] [ext_resource type="Texture2D" uid="uid://c4ojtah20jtxc" path="res://addons/godot_state_charts/atomic_state.svg" id="2_0k4pg"] [ext_resource type="Texture2D" uid="uid://bbudjoa3ds4qj" path="res://addons/godot_state_charts/compound_state.svg" id="3_b4okj"] [ext_resource type="Texture2D" uid="uid://dsa1nco51br8d" path="res://addons/godot_state_charts/parallel_state.svg" id="4_lmfic"] diff --git a/addons/godot_state_charts/utilities/event_editor/event_editor.gd.uid b/addons/godot_state_charts/utilities/event_editor/event_editor.gd.uid new file mode 100644 index 0000000..fb07cb8 --- /dev/null +++ b/addons/godot_state_charts/utilities/event_editor/event_editor.gd.uid @@ -0,0 +1 @@ +uid://bx78qgbch2n2w diff --git a/addons/godot_state_charts/utilities/event_editor/event_inspector_plugin.gd.uid b/addons/godot_state_charts/utilities/event_editor/event_inspector_plugin.gd.uid new file mode 100644 index 0000000..4967679 --- /dev/null +++ b/addons/godot_state_charts/utilities/event_editor/event_inspector_plugin.gd.uid @@ -0,0 +1 @@ +uid://bnflganrjhst8 diff --git a/addons/godot_state_charts/utilities/event_refactor/event_refactor.gd.uid b/addons/godot_state_charts/utilities/event_refactor/event_refactor.gd.uid new file mode 100644 index 0000000..b1aeaf5 --- /dev/null +++ b/addons/godot_state_charts/utilities/event_refactor/event_refactor.gd.uid @@ -0,0 +1 @@ +uid://ce8s0mg7ebk3f diff --git a/addons/godot_state_charts/utilities/event_refactor/event_refactor.tscn b/addons/godot_state_charts/utilities/event_refactor/event_refactor.tscn index 8f85eb7..8bc2daa 100644 --- a/addons/godot_state_charts/utilities/event_refactor/event_refactor.tscn +++ b/addons/godot_state_charts/utilities/event_refactor/event_refactor.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=2 format=3 uid="uid://cvlabg8e2qbk3"] -[ext_resource type="Script" path="res://addons/godot_state_charts/utilities/event_refactor/event_refactor.gd" id="1_hh1x6"] +[ext_resource type="Script" uid="uid://ce8s0mg7ebk3f" path="res://addons/godot_state_charts/utilities/event_refactor/event_refactor.gd" id="1_hh1x6"] [node name="event_refactor" type="ConfirmationDialog"] initial_position = 1 diff --git a/addons/godot_state_charts/utilities/ring_buffer.gd.uid b/addons/godot_state_charts/utilities/ring_buffer.gd.uid new file mode 100644 index 0000000..21c280e --- /dev/null +++ b/addons/godot_state_charts/utilities/ring_buffer.gd.uid @@ -0,0 +1 @@ +uid://imce1qdnxl8n diff --git a/addons/godot_state_charts/utilities/state_chart_debugger.gd.uid b/addons/godot_state_charts/utilities/state_chart_debugger.gd.uid new file mode 100644 index 0000000..614b701 --- /dev/null +++ b/addons/godot_state_charts/utilities/state_chart_debugger.gd.uid @@ -0,0 +1 @@ +uid://b8ollw5mltgtm diff --git a/addons/godot_state_charts/utilities/state_chart_debugger.tscn b/addons/godot_state_charts/utilities/state_chart_debugger.tscn index e5daa7d..d02736e 100644 --- a/addons/godot_state_charts/utilities/state_chart_debugger.tscn +++ b/addons/godot_state_charts/utilities/state_chart_debugger.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=2 format=3 uid="uid://bcwkugn6v3oy7"] -[ext_resource type="Script" path="res://addons/godot_state_charts/utilities/state_chart_debugger.gd" id="1_i74os"] +[ext_resource type="Script" uid="uid://b8ollw5mltgtm" path="res://addons/godot_state_charts/utilities/state_chart_debugger.gd" id="1_i74os"] [node name="StateChartDebugger" type="MarginContainer"] anchors_preset = 15 diff --git a/addons/godot_state_charts/utilities/state_chart_util.gd.uid b/addons/godot_state_charts/utilities/state_chart_util.gd.uid new file mode 100644 index 0000000..1157c6e --- /dev/null +++ b/addons/godot_state_charts/utilities/state_chart_util.gd.uid @@ -0,0 +1 @@ +uid://bjmsdtahinvlk diff --git a/assets/models/enemies/boney.glb.import b/assets/models/enemies/boney.glb.import index 4404602..5fc0357 100644 --- a/assets/models/enemies/boney.glb.import +++ b/assets/models/enemies/boney.glb.import @@ -18,6 +18,7 @@ nodes/root_name="" nodes/apply_root_scale=true nodes/root_scale=1.0 nodes/import_as_skeleton_bones=false +nodes/use_node_type_suffixes=true meshes/ensure_tangents=true meshes/generate_lods=true meshes/create_shadow_meshes=true diff --git a/assets/models/tiles/w1_walls.glb.import b/assets/models/tiles/w1_walls.glb.import index a56a2b7..c5dd66b 100644 --- a/assets/models/tiles/w1_walls.glb.import +++ b/assets/models/tiles/w1_walls.glb.import @@ -18,6 +18,7 @@ nodes/root_name="" nodes/apply_root_scale=true nodes/root_scale=1.0 nodes/import_as_skeleton_bones=false +nodes/use_node_type_suffixes=true meshes/ensure_tangents=true meshes/generate_lods=true meshes/create_shadow_meshes=true diff --git a/assets/shaders/barber_shop.gdshader.uid b/assets/shaders/barber_shop.gdshader.uid new file mode 100644 index 0000000..565442f --- /dev/null +++ b/assets/shaders/barber_shop.gdshader.uid @@ -0,0 +1 @@ +uid://2vowejmm8ams diff --git a/assets/shaders/confetti_spin.gdshader.uid b/assets/shaders/confetti_spin.gdshader.uid new file mode 100644 index 0000000..8d5b785 --- /dev/null +++ b/assets/shaders/confetti_spin.gdshader.uid @@ -0,0 +1 @@ +uid://bwh16agcnae24 diff --git a/assets/shaders/flag.gdshader.uid b/assets/shaders/flag.gdshader.uid new file mode 100644 index 0000000..07f55a8 --- /dev/null +++ b/assets/shaders/flag.gdshader.uid @@ -0,0 +1 @@ +uid://bk3ssuhuvbahl diff --git a/assets/shaders/horizontal_world_uv.gdshader.uid b/assets/shaders/horizontal_world_uv.gdshader.uid new file mode 100644 index 0000000..537b9c4 --- /dev/null +++ b/assets/shaders/horizontal_world_uv.gdshader.uid @@ -0,0 +1 @@ +uid://c3y1ht34ep01k diff --git a/autoloads/scene_manager.gd.uid b/autoloads/scene_manager.gd.uid new file mode 100644 index 0000000..bb7ac2c --- /dev/null +++ b/autoloads/scene_manager.gd.uid @@ -0,0 +1 @@ +uid://dno6wobc85qrw diff --git a/autoloads/scene_manager.tscn b/autoloads/scene_manager.tscn index fb7b332..7f3b842 100644 --- a/autoloads/scene_manager.tscn +++ b/autoloads/scene_manager.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=2 format=3 uid="uid://dxrvocxjk8vs3"] -[ext_resource type="Script" path="res://autoloads/scene_manager.gd" id="1_d112a"] +[ext_resource type="Script" uid="uid://dno6wobc85qrw" path="res://autoloads/scene_manager.gd" id="1_d112a"] [node name="SceneManager" type="Node" node_paths=PackedStringArray("scene_parent")] script = ExtResource("1_d112a") diff --git a/levels/level.gd.uid b/levels/level.gd.uid new file mode 100644 index 0000000..3075015 --- /dev/null +++ b/levels/level.gd.uid @@ -0,0 +1 @@ +uid://vydhlp6ju8bw diff --git a/levels/level_set.gd b/levels/level_set.gd new file mode 100644 index 0000000..14d483f --- /dev/null +++ b/levels/level_set.gd @@ -0,0 +1,2 @@ +class_name LevelSet +extends Resource diff --git a/levels/level_set.gd.uid b/levels/level_set.gd.uid new file mode 100644 index 0000000..93e3b9e --- /dev/null +++ b/levels/level_set.gd.uid @@ -0,0 +1 @@ +uid://pgfv21pnsipl diff --git a/levels/w1/1_01.tscn b/levels/w1/1_01.tscn index 24cb031..21c51c1 100644 --- a/levels/w1/1_01.tscn +++ b/levels/w1/1_01.tscn @@ -1,10 +1,10 @@ [gd_scene load_steps=14 format=3 uid="uid://bkas0lj53glkn"] -[ext_resource type="Script" path="res://levels/level.gd" id="1_r1ilo"] +[ext_resource type="Script" uid="uid://vydhlp6ju8bw" path="res://levels/level.gd" id="1_r1ilo"] [ext_resource type="MeshLibrary" uid="uid://bqxgr3arh0i7f" path="res://assets/mesh_libraries/w1/w1_walls.meshlib" id="2_81akk"] [ext_resource type="PackedScene" uid="uid://cybm74xwbsivx" path="res://objects/canny_cat.tscn" id="4_emyyh"] [ext_resource type="PackedScene" uid="uid://cdpgby3r6xe4n" path="res://objects/goal_post.tscn" id="5_oq0l4"] -[ext_resource type="Shader" path="res://assets/shaders/horizontal_world_uv.gdshader" id="6_ka4lg"] +[ext_resource type="Shader" uid="uid://c3y1ht34ep01k" path="res://assets/shaders/horizontal_world_uv.gdshader" id="6_ka4lg"] [ext_resource type="PackedScene" uid="uid://bfic5n608nc5j" path="res://objects/sand_pit.tscn" id="6_rlgmy"] [ext_resource type="Texture2D" uid="uid://cpmi7w2fwm2sf" path="res://assets/textures/world/checker_grass.png" id="7_3jvq7"] @@ -39,9 +39,9 @@ size = Vector2(32, 32) [sub_resource type="ShaderMaterial" id="ShaderMaterial_tpmcl"] render_priority = 0 shader = ExtResource("6_ka4lg") +shader_parameter/albedo_texture = ExtResource("7_3jvq7") shader_parameter/horizontal_uv_offset = Vector2(0, 0) shader_parameter/uv_scale = Vector2(0.5, 0.5) -shader_parameter/albedo_texture = ExtResource("7_3jvq7") [node name="Level" type="Node3D"] script = ExtResource("1_r1ilo") diff --git a/objects/canny_cat.gd.uid b/objects/canny_cat.gd.uid new file mode 100644 index 0000000..10cf52c --- /dev/null +++ b/objects/canny_cat.gd.uid @@ -0,0 +1 @@ +uid://b04ridmyf6571 diff --git a/objects/canny_cat.tscn b/objects/canny_cat.tscn index f65f169..754876e 100644 --- a/objects/canny_cat.tscn +++ b/objects/canny_cat.tscn @@ -1,17 +1,17 @@ [gd_scene load_steps=20 format=3 uid="uid://cybm74xwbsivx"] [ext_resource type="Texture2D" uid="uid://3i17aqnrspma" path="res://assets/textures/player/canny.png" id="1_cp4br"] -[ext_resource type="Script" path="res://objects/canny_cat.gd" id="1_twfq8"] +[ext_resource type="Script" uid="uid://b04ridmyf6571" path="res://objects/canny_cat.gd" id="1_twfq8"] [ext_resource type="Texture2D" uid="uid://bqg7vd5r7w8tm" path="res://assets/textures/shadow.png" id="2_fwt6m"] [ext_resource type="AudioStream" uid="uid://7u8a6osl4buo" path="res://assets/sounds/player/grab.ogg" id="4_hojxu"] -[ext_resource type="Script" path="res://addons/godot_state_charts/state_chart.gd" id="4_n67yk"] -[ext_resource type="Script" path="res://addons/godot_state_charts/compound_state.gd" id="5_ox6hb"] +[ext_resource type="Script" uid="uid://dsjiox4ahsvqn" path="res://addons/godot_state_charts/state_chart.gd" id="4_n67yk"] +[ext_resource type="Script" uid="uid://1csmnvxpk1j3" path="res://addons/godot_state_charts/compound_state.gd" id="5_ox6hb"] [ext_resource type="AudioStream" uid="uid://dis5fg68ese7r" path="res://assets/sounds/player/cancel.ogg" id="5_v6u4q"] [ext_resource type="AudioStream" uid="uid://dnyjfcq8m2r4f" path="res://assets/sounds/player/hit.ogg" id="6_a7neg"] -[ext_resource type="Script" path="res://addons/godot_state_charts/atomic_state.gd" id="6_bu01i"] +[ext_resource type="Script" uid="uid://kctk5uejlaoh" path="res://addons/godot_state_charts/atomic_state.gd" id="6_bu01i"] [ext_resource type="AudioStream" uid="uid://bv4plfa1oj3tf" path="res://assets/sounds/player/wall_bump.ogg" id="7_8ee3y"] -[ext_resource type="Script" path="res://addons/godot_state_charts/transition.gd" id="7_epv8h"] -[ext_resource type="Script" path="res://addons/godot_state_charts/expression_guard.gd" id="8_d5slg"] +[ext_resource type="Script" uid="uid://clasig0wood63" path="res://addons/godot_state_charts/transition.gd" id="7_epv8h"] +[ext_resource type="Script" uid="uid://m32s76pjucg7" path="res://addons/godot_state_charts/expression_guard.gd" id="8_d5slg"] [sub_resource type="Gradient" id="Gradient_u5ds4"] interpolation_mode = 2 diff --git a/objects/goal_post.gd.uid b/objects/goal_post.gd.uid new file mode 100644 index 0000000..5e0ceeb --- /dev/null +++ b/objects/goal_post.gd.uid @@ -0,0 +1 @@ +uid://dbec3pvrmeehx diff --git a/objects/goal_post.tscn b/objects/goal_post.tscn index d82a81e..553b938 100644 --- a/objects/goal_post.tscn +++ b/objects/goal_post.tscn @@ -1,9 +1,9 @@ [gd_scene load_steps=17 format=3 uid="uid://cdpgby3r6xe4n"] -[ext_resource type="Script" path="res://objects/goal_post.gd" id="1_08x2x"] -[ext_resource type="Shader" path="res://assets/shaders/flag.gdshader" id="2_xbid5"] +[ext_resource type="Script" uid="uid://dbec3pvrmeehx" path="res://objects/goal_post.gd" id="1_08x2x"] +[ext_resource type="Shader" uid="uid://bk3ssuhuvbahl" path="res://assets/shaders/flag.gdshader" id="2_xbid5"] [ext_resource type="Texture2D" uid="uid://cyxkbck2gs2wt" path="res://assets/textures/objects/goal_hole.png" id="3_yg6kd"] -[ext_resource type="Shader" path="res://assets/shaders/confetti_spin.gdshader" id="4_2tajh"] +[ext_resource type="Shader" uid="uid://bwh16agcnae24" path="res://assets/shaders/confetti_spin.gdshader" id="4_2tajh"] [sub_resource type="Gradient" id="Gradient_lo531"] interpolation_mode = 1 diff --git a/objects/sand_pit.gd.uid b/objects/sand_pit.gd.uid new file mode 100644 index 0000000..0abddf8 --- /dev/null +++ b/objects/sand_pit.gd.uid @@ -0,0 +1 @@ +uid://b7vjcer1ah68k diff --git a/objects/sand_pit.tscn b/objects/sand_pit.tscn index a631116..ad04c5a 100644 --- a/objects/sand_pit.tscn +++ b/objects/sand_pit.tscn @@ -1,15 +1,15 @@ [gd_scene load_steps=5 format=3 uid="uid://bfic5n608nc5j"] -[ext_resource type="Shader" path="res://assets/shaders/horizontal_world_uv.gdshader" id="1_2mr0t"] +[ext_resource type="Shader" uid="uid://c3y1ht34ep01k" path="res://assets/shaders/horizontal_world_uv.gdshader" id="1_2mr0t"] [ext_resource type="Texture2D" uid="uid://djx2x3jjn01w2" path="res://assets/textures/world/sand.png" id="1_yg8om"] -[ext_resource type="Script" path="res://objects/sand_pit.gd" id="2_vtyum"] +[ext_resource type="Script" uid="uid://b7vjcer1ah68k" path="res://objects/sand_pit.gd" id="2_vtyum"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_7s0pr"] render_priority = 0 shader = ExtResource("1_2mr0t") +shader_parameter/albedo_texture = ExtResource("1_yg8om") shader_parameter/horizontal_uv_offset = Vector2(0, 0) shader_parameter/uv_scale = Vector2(1, 1) -shader_parameter/albedo_texture = ExtResource("1_yg8om") [node name="SandPit" type="CSGPolygon3D" node_paths=PackedStringArray("collision_polygon")] process_physics_priority = 100 diff --git a/objects/skull.gd.uid b/objects/skull.gd.uid new file mode 100644 index 0000000..cbaee0e --- /dev/null +++ b/objects/skull.gd.uid @@ -0,0 +1 @@ +uid://cg1ki7xt2uvjl diff --git a/objects/skull.tscn b/objects/skull.tscn index 8dbfe54..0a14a59 100644 --- a/objects/skull.tscn +++ b/objects/skull.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=6 format=3 uid="uid://b4a8aif3iigdw"] -[ext_resource type="Script" path="res://objects/skull.gd" id="1_ledhy"] +[ext_resource type="Script" uid="uid://cg1ki7xt2uvjl" path="res://objects/skull.gd" id="1_ledhy"] [ext_resource type="PackedScene" uid="uid://46kyrtlb6b0a" path="res://assets/models/enemies/boney.glb" id="2_lwsb0"] [ext_resource type="AudioStream" uid="uid://cgotekctoej7m" path="res://assets/sounds/enemies/skull_death.ogg" id="3_6ybas"] diff --git a/objects/waterman_pole.gd.uid b/objects/waterman_pole.gd.uid new file mode 100644 index 0000000..0ca7413 --- /dev/null +++ b/objects/waterman_pole.gd.uid @@ -0,0 +1 @@ +uid://gqdkco5gmxpu diff --git a/objects/waterman_pole.tscn b/objects/waterman_pole.tscn index 8eb7da2..03a030a 100644 --- a/objects/waterman_pole.tscn +++ b/objects/waterman_pole.tscn @@ -1,7 +1,7 @@ [gd_scene load_steps=7 format=3 uid="uid://13qlrib2dk36"] -[ext_resource type="Script" path="res://objects/waterman_pole.gd" id="1_8whes"] -[ext_resource type="Shader" path="res://assets/shaders/barber_shop.gdshader" id="2_dukp0"] +[ext_resource type="Script" uid="uid://gqdkco5gmxpu" path="res://objects/waterman_pole.gd" id="1_8whes"] +[ext_resource type="Shader" uid="uid://2vowejmm8ams" path="res://assets/shaders/barber_shop.gdshader" id="2_dukp0"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_2dh7w"] render_priority = 0 diff --git a/project.godot b/project.godot index 6fdb7e4..8a754ec 100644 --- a/project.godot +++ b/project.godot @@ -12,7 +12,7 @@ config_version=5 config/name="ucg-3d" run/main_scene="res://test_scene.tscn" -config/features=PackedStringArray("4.3", "GL Compatibility") +config/features=PackedStringArray("4.4", "GL Compatibility") config/icon="res://icon.svg" [autoload] From ab2d42ccd90b4faa254b38affc66438900522c4c Mon Sep 17 00:00:00 2001 From: Haze Weathers Date: Fri, 28 Feb 2025 03:37:26 -0500 Subject: [PATCH 3/4] start of level system --- assets/mesh_libraries/w1/w1_walls.meshlib | Bin 5967 -> 5992 bytes .../models/tiles/w1_walls/grey_block.material | Bin 384 -> 388 bytes levels/level.gd | 10 ++ levels/level_info.gd | 6 ++ levels/level_info.gd.uid | 1 + levels/level_set.gd | 45 ++++++++ levels/w1.tres | 65 +++++++++++ levels/w1/1_01.tscn | 17 ++- levels/w1/1_02.tscn | 101 ++++++++++++++++++ levels/w1/1_03.tscn | 101 ++++++++++++++++++ levels/w1/1_04.scn | Bin 0 -> 4334 bytes 11 files changed, 342 insertions(+), 4 deletions(-) create mode 100644 levels/level_info.gd create mode 100644 levels/level_info.gd.uid create mode 100644 levels/w1.tres create mode 100644 levels/w1/1_02.tscn create mode 100644 levels/w1/1_03.tscn create mode 100644 levels/w1/1_04.scn diff --git a/assets/mesh_libraries/w1/w1_walls.meshlib b/assets/mesh_libraries/w1/w1_walls.meshlib index 8f6b891d7837ae76380f4ebf447a50e2ec843f68..0231912f2114d727f28e105ac60a8a3cb23ba3cc 100644 GIT binary patch delta 5737 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 diff --git a/assets/models/tiles/w1_walls/grey_block.material b/assets/models/tiles/w1_walls/grey_block.material index 2585b56fab5c1e4f39ff51769eb2faa088c4bf44..57395dcc3eb04430ac60620b0fd1901faa7c8e62 100644 GIT binary patch literal 388 zcmV-~0ek*ZQ$s@n000005C8y?0ssJP0RR9fwJ-f(kpUG80OpZCG*FGw0Whtq+Ges- z0x}2`NY_(q`(%@cY(jm$ZIXl>q_cxN-KBtx)GG)>Bdbs`^fTUA3M~LE05Sju-)yT+ z81rcbUv9-4?B)N|e}Wf0^hxPsq~m|(PcPo66}*;;JpT{=4+Q)H7ef)lm$z8jn9$nK zQ^y+@Q&ue(-v2G{RxM*`v;UZz;>GY{EqSdB;frY&6q^f-2#XMqi-O3lkY=={^%#=c zb=+=sPNFyeDUaI4)jq8{M_cA`8w7$m+VW}4phgoNPv^op{hX5pBS29VN&?pJDJdP^ z6Mk)f#ha++GQ?IYPn8N~6Q$s^OLaX5b literal 384 zcmV-`0e}8dQ$s@n000005C8y?0ssJL0RR9fwJ-f(kpcAz0Jf1lGjMCt0sOBba7l!! zs@M$#z*WtxC7T>%6GB7Xnj}*4Pvkq$ZMZywRdi3IE{u-H{c5XID*!A2E&!KKjqc&* z3_iiM2mzvJT|^rvA(QerP8DMpYWgZfAT-z4;+V|3^(89Fe-MQ#`@Gs zP7E8~{|DZk7`~8R{|zpB6}yTtWTh^JtCbhRH4dk^Sd5(NSUwq2%MR47pLSl21Ux9);cR7P=X=G%sNv_4HnA#*w%dAi*SI~-T5~MBn@j2 zlc0dO4xm61=s@)nteCe@3+0Ed_@Y2rc!=nH4y+--i~|O5gtJg)+Tu10W2N`dIjA6w e(kOkF;;7JGC6qjJFA{)PHnL$5HvlYBQ$s`b1+$O< diff --git a/levels/level.gd b/levels/level.gd index 70c84ec..4c882c2 100644 --- a/levels/level.gd +++ b/levels/level.gd @@ -1,2 +1,12 @@ class_name Level extends Node3D + + +@export var info: LevelInfo + + +func _unhandled_input(event: InputEvent) -> void: + if event is InputEventKey: + if event.keycode == KEY_R and event.pressed: + var new_level = load(scene_file_path).instantiate() + SceneManager.change_scene(new_level) diff --git a/levels/level_info.gd b/levels/level_info.gd new file mode 100644 index 0000000..ca8abdb --- /dev/null +++ b/levels/level_info.gd @@ -0,0 +1,6 @@ +class_name LevelInfo +extends Resource + + +@export var title: String +@export_range(1,5,1) var difficulty: int = 1 diff --git a/levels/level_info.gd.uid b/levels/level_info.gd.uid new file mode 100644 index 0000000..e9adca0 --- /dev/null +++ b/levels/level_info.gd.uid @@ -0,0 +1 @@ +uid://hmtamckjm4vm diff --git a/levels/level_set.gd b/levels/level_set.gd index 14d483f..da71414 100644 --- a/levels/level_set.gd +++ b/levels/level_set.gd @@ -1,2 +1,47 @@ +@tool class_name LevelSet extends Resource + + +@export var title: String +@export_tool_button("Update Levels") var _update_action = update_level_info +@export_dir var levels_dir: String: + set(value): + levels_dir = value + if Engine.is_editor_hint(): + update_level_info() +@export var levels: Array[LevelEntry] = [] + + +func update_level_info(): + levels.clear() + if levels_dir.is_empty() or not DirAccess.dir_exists_absolute(levels_dir): + notify_property_list_changed() + return + + var dir = DirAccess.open(levels_dir) + var files = Array(dir.get_files()).filter( + func(path: String): + return path.ends_with(".tscn") or path.ends_with(".scn") + ) as Array[String] + + for file in files: + var packed_scene = load(levels_dir + "/" + file) as PackedScene + if packed_scene: + var level = packed_scene.instantiate() + if level is Level: + var entry = LevelEntry.new() + entry.resource_name = level.info.title + entry.info = level.info + entry.scene = packed_scene + levels.append(entry) + level.free() + + notify_property_list_changed() + if Engine.is_editor_hint(): + ResourceSaver.save(self, resource_path) + + +class LevelEntry extends Resource: + @export var info: LevelInfo + @export var scene: PackedScene diff --git a/levels/w1.tres b/levels/w1.tres new file mode 100644 index 0000000..6ef027b --- /dev/null +++ b/levels/w1.tres @@ -0,0 +1,65 @@ +[gd_resource type="Resource" script_class="LevelSet" load_steps=16 format=3 uid="uid://btw8hqdurtu4l"] + +[ext_resource type="Script" uid="uid://hmtamckjm4vm" path="res://levels/level_info.gd" id="1_aabai"] +[ext_resource type="Script" uid="uid://pgfv21pnsipl" path="res://levels/level_set.gd" id="1_wemf7"] +[ext_resource type="PackedScene" uid="uid://bkas0lj53glkn" path="res://levels/w1/1_01.tscn" id="2_e78ac"] +[ext_resource type="PackedScene" uid="uid://w0nd4xra2jf1" path="res://levels/w1/1_02.tscn" id="3_t0snc"] +[ext_resource type="PackedScene" uid="uid://brskrrxg5v5wq" path="res://levels/w1/1_03.tscn" id="4_argu4"] +[ext_resource type="PackedScene" uid="uid://3ck33ekhtriv" path="res://levels/w1/1_04.scn" id="5_qkhto"] + +[sub_resource type="GDScript" id="GDScript_ue4o7"] + +[sub_resource type="Resource" id="Resource_qskty"] +script = ExtResource("1_aabai") +title = "Welcome To Poo Central!" +difficulty = 1 +metadata/_custom_type_script = "uid://hmtamckjm4vm" + +[sub_resource type="Resource" id="Resource_ymcbg"] +resource_name = "Welcome To Golf Central!" +script = SubResource("GDScript_ue4o7") +info = SubResource("Resource_qskty") +scene = ExtResource("2_e78ac") + +[sub_resource type="Resource" id="Resource_4m1at"] +script = ExtResource("1_aabai") +title = "Oogly Goo" +difficulty = 2 +metadata/_custom_type_script = "uid://hmtamckjm4vm" + +[sub_resource type="Resource" id="Resource_604lb"] +resource_name = "Oogly Goo" +script = SubResource("GDScript_ue4o7") +info = SubResource("Resource_4m1at") +scene = ExtResource("3_t0snc") + +[sub_resource type="Resource" id="Resource_108v6"] +script = ExtResource("1_aabai") +title = "Number Three!" +difficulty = 5 +metadata/_custom_type_script = "uid://hmtamckjm4vm" + +[sub_resource type="Resource" id="Resource_4ntyl"] +resource_name = "Number Three!" +script = SubResource("GDScript_ue4o7") +info = SubResource("Resource_108v6") +scene = ExtResource("4_argu4") + +[sub_resource type="Resource" id="Resource_ra4qo"] +script = ExtResource("1_aabai") +title = "Foursyies" +difficulty = 3 +metadata/_custom_type_script = "uid://hmtamckjm4vm" + +[sub_resource type="Resource" id="Resource_0h8e4"] +resource_name = "Foursyies" +script = SubResource("GDScript_ue4o7") +info = SubResource("Resource_ra4qo") +scene = ExtResource("5_qkhto") + +[resource] +script = ExtResource("1_wemf7") +title = "Golf Central" +levels_dir = "res://levels/w1" +levels = Array[SubResource("GDScript_ue4o7")]([SubResource("Resource_ymcbg"), SubResource("Resource_604lb"), SubResource("Resource_4ntyl"), SubResource("Resource_0h8e4")]) +metadata/_custom_type_script = "uid://pgfv21pnsipl" diff --git a/levels/w1/1_01.tscn b/levels/w1/1_01.tscn index 21c51c1..b1899b1 100644 --- a/levels/w1/1_01.tscn +++ b/levels/w1/1_01.tscn @@ -1,6 +1,7 @@ -[gd_scene load_steps=14 format=3 uid="uid://bkas0lj53glkn"] +[gd_scene load_steps=16 format=3 uid="uid://bkas0lj53glkn"] [ext_resource type="Script" uid="uid://vydhlp6ju8bw" path="res://levels/level.gd" id="1_r1ilo"] +[ext_resource type="Script" uid="uid://hmtamckjm4vm" path="res://levels/level_info.gd" id="2_61qek"] [ext_resource type="MeshLibrary" uid="uid://bqxgr3arh0i7f" path="res://assets/mesh_libraries/w1/w1_walls.meshlib" id="2_81akk"] [ext_resource type="PackedScene" uid="uid://cybm74xwbsivx" path="res://objects/canny_cat.tscn" id="4_emyyh"] [ext_resource type="PackedScene" uid="uid://cdpgby3r6xe4n" path="res://objects/goal_post.tscn" id="5_oq0l4"] @@ -8,6 +9,12 @@ [ext_resource type="PackedScene" uid="uid://bfic5n608nc5j" path="res://objects/sand_pit.tscn" id="6_rlgmy"] [ext_resource type="Texture2D" uid="uid://cpmi7w2fwm2sf" path="res://assets/textures/world/checker_grass.png" id="7_3jvq7"] +[sub_resource type="Resource" id="Resource_qskty"] +script = ExtResource("2_61qek") +title = "Welcome To Poo Central!" +difficulty = 1 +metadata/_custom_type_script = "uid://hmtamckjm4vm" + [sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_oakh3"] sky_top_color = Color(0.270389, 0.858166, 0.929253, 1) sky_horizon_color = Color(0.270588, 0.858824, 0.929412, 1) @@ -33,8 +40,8 @@ resource_local_to_scene = true shading_mode = 0 albedo_color = Color(0.916968, 0.113727, 0, 1) -[sub_resource type="PlaneMesh" id="PlaneMesh_roqf0"] -size = Vector2(32, 32) +[sub_resource type="BoxMesh" id="BoxMesh_25rxq"] +size = Vector3(32, 1, 32) [sub_resource type="ShaderMaterial" id="ShaderMaterial_tpmcl"] render_priority = 0 @@ -45,6 +52,7 @@ shader_parameter/uv_scale = Vector2(0.5, 0.5) [node name="Level" type="Node3D"] script = ExtResource("1_r1ilo") +info = SubResource("Resource_qskty") [node name="WorldEnvironment" type="WorldEnvironment" parent="."] environment = SubResource("Environment_n6dij") @@ -86,7 +94,8 @@ transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, -12.54 polygon = PackedVector2Array(2.33224, -4.27959, 0.718879, 0.533604, 2.00957, 6.26103, -3.74475, 6.12658, -3.52964, -4.44092) [node name="CSGMesh3D" type="CSGMesh3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.5, 0) use_collision = true collision_mask = 0 -mesh = SubResource("PlaneMesh_roqf0") +mesh = SubResource("BoxMesh_25rxq") material = SubResource("ShaderMaterial_tpmcl") diff --git a/levels/w1/1_02.tscn b/levels/w1/1_02.tscn new file mode 100644 index 0000000..2640db8 --- /dev/null +++ b/levels/w1/1_02.tscn @@ -0,0 +1,101 @@ +[gd_scene load_steps=16 format=3 uid="uid://w0nd4xra2jf1"] + +[ext_resource type="Script" uid="uid://vydhlp6ju8bw" path="res://levels/level.gd" id="1_u02w2"] +[ext_resource type="Script" uid="uid://hmtamckjm4vm" path="res://levels/level_info.gd" id="2_m70t5"] +[ext_resource type="MeshLibrary" uid="uid://bqxgr3arh0i7f" path="res://assets/mesh_libraries/w1/w1_walls.meshlib" id="2_w6c2x"] +[ext_resource type="PackedScene" uid="uid://cybm74xwbsivx" path="res://objects/canny_cat.tscn" id="3_m70t5"] +[ext_resource type="PackedScene" uid="uid://cdpgby3r6xe4n" path="res://objects/goal_post.tscn" id="4_4m1at"] +[ext_resource type="PackedScene" uid="uid://bfic5n608nc5j" path="res://objects/sand_pit.tscn" id="5_hoiq0"] +[ext_resource type="Shader" uid="uid://c3y1ht34ep01k" path="res://assets/shaders/horizontal_world_uv.gdshader" id="6_dech8"] +[ext_resource type="Texture2D" uid="uid://cpmi7w2fwm2sf" path="res://assets/textures/world/checker_grass.png" id="7_x5v8p"] + +[sub_resource type="Resource" id="Resource_4m1at"] +script = ExtResource("2_m70t5") +title = "Oogly Goo" +difficulty = 2 +metadata/_custom_type_script = "uid://hmtamckjm4vm" + +[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_oakh3"] +sky_top_color = Color(0.270389, 0.858166, 0.929253, 1) +sky_horizon_color = Color(0.270588, 0.858824, 0.929412, 1) +ground_bottom_color = Color(0.089621, 0.176788, 0.342266, 1) +ground_horizon_color = Color(0.270588, 0.858824, 0.929412, 1) +ground_curve = 0.452548 +sun_angle_max = 0.0 +use_debanding = false + +[sub_resource type="Sky" id="Sky_f657k"] +sky_material = SubResource("ProceduralSkyMaterial_oakh3") +radiance_size = 0 + +[sub_resource type="Environment" id="Environment_n6dij"] +background_mode = 2 +sky = SubResource("Sky_f657k") +ambient_light_source = 2 +ambient_light_color = Color(1, 1, 1, 1) +ambient_light_energy = 0.25 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_8l41h"] +resource_local_to_scene = true +shading_mode = 0 +albedo_color = Color(0.916968, 0.113727, 0, 1) + +[sub_resource type="BoxMesh" id="BoxMesh_25rxq"] +size = Vector3(32, 1, 32) + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_tpmcl"] +render_priority = 0 +shader = ExtResource("6_dech8") +shader_parameter/albedo_texture = ExtResource("7_x5v8p") +shader_parameter/horizontal_uv_offset = Vector2(0, 0) +shader_parameter/uv_scale = Vector2(0.5, 0.5) + +[node name="Level" type="Node3D"] +script = ExtResource("1_u02w2") +info = SubResource("Resource_4m1at") + +[node name="WorldEnvironment" type="WorldEnvironment" parent="."] +environment = SubResource("Environment_n6dij") + +[node name="Sun" type="DirectionalLight3D" parent="."] +transform = Transform3D(0.893065, 0.251134, -0.373318, 0, 0.82973, 0.558165, 0.449927, -0.498478, 0.741003, 0, 3.18312, 0) +sky_mode = 1 + +[node name="Walls" type="GridMap" parent="."] +mesh_library = ExtResource("2_w6c2x") +cell_size = Vector3(1, 1, 1) +cell_center_y = false +data = { +"cells": PackedInt32Array(0, 65535, 0, 65535, 65535, 0, 65535, 65534, 0, 0, 65534, 0, 0, 65533, 0, 0, 65532, 0, 65535, 65532, 0, 65535, 65533, 0, 65534, 65533, 0, 65534, 65534, 0, 1, 65535, 0, 2, 65535, 0, 3, 65535, 0, 4, 65535, 0, 4, 65534, 0, 4, 65533, 0, 4, 65532, 0, 3, 65532, 0, 2, 65532, 0, 1, 65532, 0, 1, 65533, 0, 1, 65534, 0, 2, 65534, 0, 2, 65533, 0, 3, 65533, 0, 3, 65534, 0, 4, 65531, 0, 3, 65531, 0, 2, 65531, 0, 2, 65530, 1441793, 3, 65530, 0, 4, 65530, 0, 1, 65531, 1441793, 5, 65535, 1048577, 5, 65534, 1048576, 5, 65533, 1048576, 5, 65532, 1048576, 5, 65531, 1048576, 5, 65530, 1048576, 65534, 65532, 1441793, 65534, 65535, 1, 6, 65530, 0, 6, 65531, 0, 7, 65531, 0, 7, 65530, 0, 8, 65530, 0, 8, 65531, 0, 9, 65531, 0, 9, 65530, 0, 10, 65530, 0, 11, 65530, 0, 12, 65530, 0, 13, 65530, 0, 13, 65531, 0, 12, 65531, 0, 11, 65531, 0, 10, 65531, 0, 6, 65532, 1048577, 13, 65532, 1, 13, 65529, 1441793, 14, 65529, 1441792, 14, 65530, 1441792, 14, 65531, 1441792, 14, 65532, 1441792, 14, 65533, 1441792, 14, 65534, 1441792, 14, 65535, 1441792, 15, 65529, 1441792, 16, 65529, 1441792, 16, 65530, 1441792, 16, 65531, 1441792, 16, 65532, 1441792, 15, 65532, 1441792, 15, 65531, 1441792, 15, 65530, 1441792, 14, 65528, 1441792, 14, 65527, 1441792, 14, 65526, 1441792, 14, 65525, 1441792, 14, 65524, 1441792, 14, 65523, 1441792, 14, 65522, 1441792, 13, 65522, 1, 14, 0, 0, 14, 1, 0, 14, 2, 0, 14, 3, 0, 14, 4, 0, 14, 5, 0, 14, 6, 0, 14, 7, 0, 14, 8, 0, 13, 9, 1441793, 12, 10, 1441793, 11, 11, 1441793, 10, 12, 1441793, 9, 13, 1441793, 14, 10, 1441792, 14, 9, 1441792, 14, 11, 1441792, 14, 12, 1441792, 14, 13, 1441792, 13, 13, 1441792, 12, 13, 1441792, 11, 13, 1441792, 10, 13, 1441792, 11, 12, 1441792, 12, 12, 1441792, 12, 11, 1441792, 13, 11, 1441792, 13, 12, 1441792, 13, 10, 1441792, 15, 14, 1441792, 16, 15, 1441792, 16, 14, 1441792, 16, 13, 1441792, 16, 12, 1441792, 16, 11, 1441792, 16, 10, 1441792, 16, 9, 1441792, 16, 8, 1441792, 16, 7, 1441792, 16, 6, 1441792, 16, 5, 1441792, 16, 4, 1441792, 16, 3, 1441792, 16, 2, 1441792, 16, 1, 1441792, 16, 0, 1441792, 15, 0, 1441792, 15, 65535, 1441792, 15, 65534, 1441792, 16, 65534, 1441792, 16, 65533, 1441792, 16, 65535, 1441792, 15, 65533, 1441792, 15, 1, 1441792, 15, 2, 1441792, 15, 3, 1441792, 15, 4, 1441792, 15, 5, 1441792, 15, 6, 1441792, 15, 7, 1441792, 15, 8, 1441792, 15, 9, 1441792, 15, 10, 1441792, 15, 11, 1441792, 15, 12, 1441792, 15, 13, 1441792, 15, 15, 1441792, 14, 15, 1441792, 13, 15, 1441792, 12, 15, 1441792, 11, 15, 1441792, 10, 15, 1441792, 9, 15, 1441792, 9, 14, 1441792, 10, 14, 1441792, 11, 14, 1441792, 12, 14, 1441792, 13, 14, 1441792, 14, 14, 1441792, 8, 14, 1441792, 8, 15, 1441792, 16, 16, 1441792, 15, 16, 1441792, 10, 16, 1441792, 11, 16, 1441792, 12, 16, 1441792, 13, 16, 1441792, 14, 16, 1441792, 9, 16, 1441792, 8, 16, 1441792, 7, 16, 1441792, 6, 16, 1441792, 6, 15, 1441792, 5, 15, 1441792, 7, 15, 1441792, 7, 14, 1441792, 6, 14, 1441792, 5, 14, 1441792, 5, 16, 1441792, 65525, 65533, 1441792, 65525, 65534, 1441792, 65525, 65532, 1441792, 65525, 65531, 655361, 65524, 65530, 655361, 65523, 65529, 655361, 65522, 65528, 655361, 65521, 65527, 655360, 65521, 65526, 655360, 65521, 65525, 655360, 65521, 65524, 655360, 65522, 65523, 1048577, 65523, 65522, 1048577, 14, 65521, 1048576, 13, 65521, 1048576, 12, 65521, 1048576, 11, 65521, 1048576, 10, 65521, 1048576, 9, 65521, 1048576, 8, 65521, 1048576, 7, 65521, 1048576, 6, 65521, 1048576, 5, 65521, 1048576, 4, 65521, 1048576, 3, 65521, 1048576, 2, 65521, 1048576, 1, 65521, 1048576, 0, 65521, 1048576, 65535, 65521, 1048576, 65534, 65521, 1048576, 65533, 65521, 1048576, 65532, 65521, 1048576, 65531, 65521, 1048576, 65530, 65521, 1048576, 65529, 65521, 1048576, 65528, 65521, 1048576, 65527, 65521, 1048576, 65526, 65521, 1048576, 65525, 65521, 1048576, 65524, 65521, 1048576, 65523, 65521, 1048576, 65522, 65521, 1048576, 65521, 65521, 1048576, 65521, 65522, 1048576, 65521, 65523, 1048576, 65522, 65522, 1048576, 16, 65528, 1048576, 16, 65527, 1048576, 16, 65526, 1048576, 15, 65526, 1048576, 15, 65527, 1048576, 15, 65528, 1048576, 15, 65525, 1048576, 15, 65524, 1048576, 15, 65523, 1048576, 15, 65522, 1048576, 15, 65521, 1048576, 15, 65520, 1048576, 15, 65519, 1048576, 16, 65519, 1048576, 16, 65520, 1048576, 16, 65521, 1048576, 16, 65525, 1048576, 16, 65524, 1048576, 16, 65523, 1048576, 16, 65522, 1048576, 14, 65519, 1048576, 13, 65519, 1048576, 12, 65519, 1048576, 11, 65519, 1048576, 10, 65519, 1048576, 9, 65519, 1048576, 8, 65519, 1048576, 7, 65519, 1048576, 6, 65519, 1048576, 5, 65519, 1048576, 4, 65519, 1048576, 3, 65519, 1048576, 2, 65519, 1048576, 1, 65519, 1048576, 0, 65519, 1048576, 65535, 65519, 1048576, 65534, 65519, 1048576, 65533, 65519, 1048576, 65532, 65519, 1048576, 65531, 65519, 1048576, 65530, 65519, 1048576, 65529, 65519, 1048576, 65528, 65519, 1048576, 65527, 65519, 1048576, 65526, 65519, 1048576, 65525, 65519, 1048576, 65524, 65519, 1048576, 65523, 65519, 1048576, 65522, 65519, 1048576, 65522, 65520, 1048576, 65521, 65520, 1048576, 65521, 65519, 1048576, 65523, 65520, 1048576, 65524, 65520, 1048576, 65525, 65520, 1048576, 65526, 65520, 1048576, 65527, 65520, 1048576, 65528, 65520, 1048576, 65529, 65520, 1048576, 65533, 65520, 1048576, 65532, 65520, 1048576, 65531, 65520, 1048576, 65530, 65520, 1048576, 65534, 65520, 1048576, 65535, 65520, 1048576, 0, 65520, 1048576, 1, 65520, 1048576, 2, 65520, 1048576, 3, 65520, 1048576, 4, 65520, 1048576, 5, 65520, 1048576, 6, 65520, 1048576, 7, 65520, 1048576, 8, 65520, 1048576, 9, 65520, 1048576, 10, 65520, 1048576, 11, 65520, 1048576, 12, 65520, 1048576, 13, 65520, 1048576, 14, 65520, 1048576, 65520, 65519, 1048576, 65519, 65519, 1048576, 65519, 65520, 1048576, 65520, 65520, 1048576, 65520, 65521, 1048576, 65520, 65522, 1048576, 65520, 65523, 1048576, 65520, 65524, 1048576, 65520, 65525, 1048576, 65520, 65526, 1048576, 65520, 65527, 1048576, 65519, 65527, 1048576, 65519, 65526, 1048576, 65519, 65525, 1048576, 65519, 65524, 1048576, 65519, 65523, 1048576, 65519, 65522, 1048576, 65519, 65521, 1048576, 65521, 65528, 1048576, 65520, 65528, 1048576, 65519, 65528, 1048576, 65519, 65529, 1048576, 65520, 65529, 1048576, 65520, 65530, 1048576, 65520, 65531, 1048576, 65520, 65532, 1048576, 65519, 65532, 1048576, 65519, 65531, 1048576, 65519, 65530, 1048576, 65519, 65533, 1048576, 65519, 65534, 1048576, 65519, 65535, 1048576, 65519, 0, 1048576, 65519, 1, 1048576, 65519, 2, 1048576, 65519, 3, 1048576, 65519, 4, 1048576, 65519, 5, 1048576, 65519, 6, 1048576, 65519, 7, 1048576, 65519, 8, 1048576, 65519, 9, 1048576, 65519, 10, 1048576, 65520, 10, 1048576, 65520, 11, 1048576, 65520, 12, 1048576, 65520, 13, 1048576, 65519, 15, 1048576, 65519, 14, 1048576, 65519, 13, 1048576, 65519, 12, 1048576, 65519, 11, 1048576, 65519, 16, 1048576, 65520, 16, 1048576, 65520, 15, 1048576, 65520, 14, 1048576, 65520, 9, 1048576, 65520, 8, 1048576, 65520, 7, 1048576, 65520, 6, 1048576, 65520, 5, 1048576, 65520, 4, 1048576, 65520, 3, 1048576, 65520, 2, 1048576, 65520, 1, 1048576, 65520, 0, 1048576, 65520, 65535, 1048576, 65520, 65534, 1048576, 65520, 65533, 1048576, 65525, 65535, 1048576, 65525, 0, 1048576, 65525, 1, 1048576, 65525, 2, 1048576, 65525, 3, 1048576, 65525, 4, 1048576, 65525, 5, 1048576, 65525, 6, 1048576, 65525, 7, 1048576, 65525, 8, 1048576, 65525, 9, 1048576, 65525, 10, 1048576, 65525, 11, 1048576, 65525, 12, 1048576, 65525, 13, 1048576, 65525, 14, 1048576, 65525, 15, 1048576, 65525, 16, 1048576, 65524, 15, 1048576, 65524, 16, 1048576, 65523, 16, 1048576, 65522, 16, 1048576, 65521, 16, 1048576, 65521, 15, 1048576, 65522, 15, 1048576, 65523, 14, 1048576, 65524, 14, 1048576, 65523, 15, 1048576, 65522, 14, 1048576, 65521, 14, 1048576, 65522, 13, 1048576, 65523, 13, 1048576, 65524, 13, 1048576, 65521, 13, 1048576, 65521, 12, 1048576, 65521, 11, 1048576, 65521, 10, 1048576, 65521, 9, 1048576, 65521, 7, 1048576, 65521, 6, 1048576, 65521, 5, 1048576, 65521, 4, 1048576, 65521, 3, 1048576, 65521, 2, 1048576, 65521, 65535, 1048576, 65521, 0, 1048576, 65521, 1, 1048576, 65521, 8, 1048576, 65522, 65535, 1048576, 65522, 65533, 1048576, 65522, 65532, 1048576, 65521, 65531, 1048576, 65521, 65530, 1048576, 65521, 65529, 1048576, 65522, 65529, 1048576, 65522, 65530, 1048576, 65522, 65531, 1048576, 65521, 65532, 1048576, 65521, 65533, 1048576, 65521, 65534, 1048576, 65523, 65532, 1048576, 65523, 65531, 1048576, 65523, 65530, 1048576, 65524, 65532, 1048576, 65524, 65531, 1048576, 65524, 65533, 1048576, 65524, 65534, 1048576, 65524, 65535, 1048576, 65524, 0, 1048576, 65524, 1, 1048576, 65524, 2, 1048576, 65524, 3, 1048576, 65524, 4, 1048576, 65524, 5, 1048576, 65524, 6, 1048576, 65524, 7, 1048576, 65524, 8, 1048576, 65524, 9, 1048576, 65524, 10, 1048576, 65524, 11, 1048576, 65524, 12, 1048576, 65523, 12, 1048576, 65522, 12, 1048576, 65522, 11, 1048576, 65522, 10, 1048576, 65522, 9, 1048576, 65522, 8, 1048576, 65522, 7, 1048576, 65522, 6, 1048576, 65522, 5, 1048576, 65522, 4, 1048576, 65522, 3, 1048576, 65522, 2, 1048576, 65522, 1, 1048576, 65522, 0, 1048576, 65522, 65534, 1048576, 65523, 65534, 1048576, 65523, 65535, 1048576, 65523, 65533, 1048576, 65523, 0, 1048576, 65523, 1, 1048576, 65523, 2, 1048576, 65523, 3, 1048576, 65523, 4, 1048576, 65523, 5, 1048576, 65523, 6, 1048576, 65523, 10, 1048576, 65523, 9, 1048576, 65523, 8, 1048576, 65523, 7, 1048576, 65523, 11, 1048576, 4, 14, 1048576, 3, 14, 1048576, 2, 14, 1048576, 1, 14, 1048576, 0, 14, 1048576, 65535, 14, 1048576, 65534, 14, 1048576, 65533, 14, 1048576, 65532, 14, 1048576, 65531, 14, 1048576, 65530, 14, 1048576, 65529, 14, 1048576, 65528, 14, 1048576, 65527, 14, 1048576, 65527, 15, 1048576, 65526, 15, 1048576, 65526, 16, 1048576, 65526, 14, 1048576, 65527, 16, 1048576, 65528, 16, 1048576, 65529, 16, 1048576, 65530, 16, 1048576, 65531, 16, 1048576, 65532, 16, 1048576, 65533, 16, 1048576, 65534, 16, 1048576, 65535, 16, 1048576, 0, 16, 1048576, 1, 16, 1048576, 2, 16, 1048576, 3, 16, 1048576, 4, 16, 1048576, 4, 15, 1048576, 3, 15, 1048576, 2, 15, 1048576, 1, 15, 1048576, 0, 15, 1048576, 65535, 15, 1048576, 65534, 15, 1048576, 65533, 15, 1048576, 65532, 15, 1048576, 65531, 15, 1048576, 65530, 15, 1048576, 65529, 15, 1048576, 65528, 15, 1048576, 65526, 9, 655361, 65527, 10, 655361, 65528, 11, 655361, 65529, 12, 655361, 65530, 13, 655361, 65529, 13, 655360, 65528, 13, 655360, 65527, 13, 655360, 65526, 13, 655360, 65526, 12, 655360, 65526, 11, 655360, 65526, 10, 655360, 65527, 11, 655360, 65527, 12, 655360, 65528, 12, 655360) +} + +[node name="CannyCat" parent="." instance=ExtResource("3_m70t5")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10, 1, -2) +power_line_material = SubResource("StandardMaterial3D_8l41h") +power_scale = 40.0 + +[node name="Objects" type="Node3D" parent="."] + +[node name="GoalPost" parent="Objects" instance=ExtResource("4_4m1at")] +transform = Transform3D(0.707107, 0, -0.707107, 0, 1, 0, 0.707107, 0, 0.707107, 10, 0, -10) + +[node name="SandPits" type="Node3D" parent="Objects"] + +[node name="SandPit" parent="Objects/SandPits" instance=ExtResource("5_hoiq0")] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, -7, 0, 8) +polygon = PackedVector2Array(-3, -2, 1, 0, 5, 6, -3, 6) + +[node name="SandPit2" parent="Objects/SandPits" instance=ExtResource("5_hoiq0")] +transform = Transform3D(-1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, 11, 0, 8) +polygon = PackedVector2Array(-3, -2, 1, 0, 5, 6, -3, 6) + +[node name="SandPit3" parent="Objects/SandPits" instance=ExtResource("5_hoiq0")] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, -12.5406, 0, -10.5995) +polygon = PackedVector2Array(2.33224, -4.27959, 0.718879, 0.533604, 2.00957, 6.26103, -3.74475, 6.12658, -3.52964, -4.44092) + +[node name="CSGMesh3D" type="CSGMesh3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.5, 0) +use_collision = true +collision_mask = 0 +mesh = SubResource("BoxMesh_25rxq") +material = SubResource("ShaderMaterial_tpmcl") diff --git a/levels/w1/1_03.tscn b/levels/w1/1_03.tscn new file mode 100644 index 0000000..310b943 --- /dev/null +++ b/levels/w1/1_03.tscn @@ -0,0 +1,101 @@ +[gd_scene load_steps=16 format=3 uid="uid://brskrrxg5v5wq"] + +[ext_resource type="Script" uid="uid://vydhlp6ju8bw" path="res://levels/level.gd" id="1_750nu"] +[ext_resource type="Script" uid="uid://hmtamckjm4vm" path="res://levels/level_info.gd" id="2_1802c"] +[ext_resource type="MeshLibrary" uid="uid://bqxgr3arh0i7f" path="res://assets/mesh_libraries/w1/w1_walls.meshlib" id="2_qejmv"] +[ext_resource type="PackedScene" uid="uid://cybm74xwbsivx" path="res://objects/canny_cat.tscn" id="3_1802c"] +[ext_resource type="PackedScene" uid="uid://cdpgby3r6xe4n" path="res://objects/goal_post.tscn" id="4_108v6"] +[ext_resource type="PackedScene" uid="uid://bfic5n608nc5j" path="res://objects/sand_pit.tscn" id="5_0oe1q"] +[ext_resource type="Shader" uid="uid://c3y1ht34ep01k" path="res://assets/shaders/horizontal_world_uv.gdshader" id="6_w88by"] +[ext_resource type="Texture2D" uid="uid://cpmi7w2fwm2sf" path="res://assets/textures/world/checker_grass.png" id="7_f61du"] + +[sub_resource type="Resource" id="Resource_108v6"] +script = ExtResource("2_1802c") +title = "Number Three!" +difficulty = 5 +metadata/_custom_type_script = "uid://hmtamckjm4vm" + +[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_oakh3"] +sky_top_color = Color(0.270389, 0.858166, 0.929253, 1) +sky_horizon_color = Color(0.270588, 0.858824, 0.929412, 1) +ground_bottom_color = Color(0.089621, 0.176788, 0.342266, 1) +ground_horizon_color = Color(0.270588, 0.858824, 0.929412, 1) +ground_curve = 0.452548 +sun_angle_max = 0.0 +use_debanding = false + +[sub_resource type="Sky" id="Sky_f657k"] +sky_material = SubResource("ProceduralSkyMaterial_oakh3") +radiance_size = 0 + +[sub_resource type="Environment" id="Environment_n6dij"] +background_mode = 2 +sky = SubResource("Sky_f657k") +ambient_light_source = 2 +ambient_light_color = Color(1, 1, 1, 1) +ambient_light_energy = 0.25 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_8l41h"] +resource_local_to_scene = true +shading_mode = 0 +albedo_color = Color(0.916968, 0.113727, 0, 1) + +[sub_resource type="BoxMesh" id="BoxMesh_25rxq"] +size = Vector3(32, 1, 32) + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_tpmcl"] +render_priority = 0 +shader = ExtResource("6_w88by") +shader_parameter/albedo_texture = ExtResource("7_f61du") +shader_parameter/horizontal_uv_offset = Vector2(0, 0) +shader_parameter/uv_scale = Vector2(0.5, 0.5) + +[node name="Level" type="Node3D"] +script = ExtResource("1_750nu") +info = SubResource("Resource_108v6") + +[node name="WorldEnvironment" type="WorldEnvironment" parent="."] +environment = SubResource("Environment_n6dij") + +[node name="Sun" type="DirectionalLight3D" parent="."] +transform = Transform3D(0.893065, 0.251134, -0.373318, 0, 0.82973, 0.558165, 0.449927, -0.498478, 0.741003, 0, 3.18312, 0) +sky_mode = 1 + +[node name="Walls" type="GridMap" parent="."] +mesh_library = ExtResource("2_qejmv") +cell_size = Vector3(1, 1, 1) +cell_center_y = false +data = { +"cells": PackedInt32Array(0, 65535, 0, 65535, 65535, 0, 65535, 65534, 0, 0, 65534, 0, 0, 65533, 0, 0, 65532, 0, 65535, 65532, 0, 65535, 65533, 0, 65534, 65533, 0, 65534, 65534, 0, 1, 65535, 0, 2, 65535, 0, 3, 65535, 0, 4, 65535, 0, 4, 65534, 0, 4, 65533, 0, 4, 65532, 0, 3, 65532, 0, 2, 65532, 0, 1, 65532, 0, 1, 65533, 0, 1, 65534, 0, 2, 65534, 0, 2, 65533, 0, 3, 65533, 0, 3, 65534, 0, 4, 65531, 0, 3, 65531, 0, 2, 65531, 0, 2, 65530, 1441793, 3, 65530, 0, 4, 65530, 0, 1, 65531, 1441793, 5, 65535, 1048577, 5, 65534, 1048576, 5, 65533, 1048576, 5, 65532, 1048576, 5, 65531, 1048576, 5, 65530, 1048576, 65534, 65532, 1441793, 65534, 65535, 1, 6, 65530, 0, 6, 65531, 0, 7, 65531, 0, 7, 65530, 0, 8, 65530, 0, 8, 65531, 0, 9, 65531, 0, 9, 65530, 0, 10, 65530, 0, 11, 65530, 0, 12, 65530, 0, 13, 65530, 0, 13, 65531, 0, 12, 65531, 0, 11, 65531, 0, 10, 65531, 0, 6, 65532, 1048577, 13, 65532, 1, 13, 65529, 1441793, 14, 65529, 1441792, 14, 65530, 1441792, 14, 65531, 1441792, 14, 65532, 1441792, 14, 65533, 1441792, 14, 65534, 1441792, 14, 65535, 1441792, 15, 65529, 1441792, 16, 65529, 1441792, 16, 65530, 1441792, 16, 65531, 1441792, 16, 65532, 1441792, 15, 65532, 1441792, 15, 65531, 1441792, 15, 65530, 1441792, 14, 65528, 1441792, 14, 65527, 1441792, 14, 65526, 1441792, 14, 65525, 1441792, 14, 65524, 1441792, 14, 65523, 1441792, 14, 65522, 1441792, 13, 65522, 1, 14, 0, 0, 14, 1, 0, 14, 2, 0, 14, 3, 0, 14, 4, 0, 14, 5, 0, 14, 6, 0, 14, 7, 0, 14, 8, 0, 13, 9, 1441793, 12, 10, 1441793, 11, 11, 1441793, 10, 12, 1441793, 9, 13, 1441793, 14, 10, 1441792, 14, 9, 1441792, 14, 11, 1441792, 14, 12, 1441792, 14, 13, 1441792, 13, 13, 1441792, 12, 13, 1441792, 11, 13, 1441792, 10, 13, 1441792, 11, 12, 1441792, 12, 12, 1441792, 12, 11, 1441792, 13, 11, 1441792, 13, 12, 1441792, 13, 10, 1441792, 15, 14, 1441792, 16, 15, 1441792, 16, 14, 1441792, 16, 13, 1441792, 16, 12, 1441792, 16, 11, 1441792, 16, 10, 1441792, 16, 9, 1441792, 16, 8, 1441792, 16, 7, 1441792, 16, 6, 1441792, 16, 5, 1441792, 16, 4, 1441792, 16, 3, 1441792, 16, 2, 1441792, 16, 1, 1441792, 16, 0, 1441792, 15, 0, 1441792, 15, 65535, 1441792, 15, 65534, 1441792, 16, 65534, 1441792, 16, 65533, 1441792, 16, 65535, 1441792, 15, 65533, 1441792, 15, 1, 1441792, 15, 2, 1441792, 15, 3, 1441792, 15, 4, 1441792, 15, 5, 1441792, 15, 6, 1441792, 15, 7, 1441792, 15, 8, 1441792, 15, 9, 1441792, 15, 10, 1441792, 15, 11, 1441792, 15, 12, 1441792, 15, 13, 1441792, 15, 15, 1441792, 14, 15, 1441792, 13, 15, 1441792, 12, 15, 1441792, 11, 15, 1441792, 10, 15, 1441792, 9, 15, 1441792, 9, 14, 1441792, 10, 14, 1441792, 11, 14, 1441792, 12, 14, 1441792, 13, 14, 1441792, 14, 14, 1441792, 8, 14, 1441792, 8, 15, 1441792, 16, 16, 1441792, 15, 16, 1441792, 10, 16, 1441792, 11, 16, 1441792, 12, 16, 1441792, 13, 16, 1441792, 14, 16, 1441792, 9, 16, 1441792, 8, 16, 1441792, 7, 16, 1441792, 6, 16, 1441792, 6, 15, 1441792, 5, 15, 1441792, 7, 15, 1441792, 7, 14, 1441792, 6, 14, 1441792, 5, 14, 1441792, 5, 16, 1441792, 65525, 65533, 1441792, 65525, 65534, 1441792, 65525, 65532, 1441792, 65525, 65531, 655361, 65524, 65530, 655361, 65523, 65529, 655361, 65522, 65528, 655361, 65521, 65527, 655360, 65521, 65526, 655360, 65521, 65525, 655360, 65521, 65524, 655360, 65522, 65523, 1048577, 65523, 65522, 1048577, 14, 65521, 1048576, 13, 65521, 1048576, 12, 65521, 1048576, 11, 65521, 1048576, 10, 65521, 1048576, 9, 65521, 1048576, 8, 65521, 1048576, 7, 65521, 1048576, 6, 65521, 1048576, 5, 65521, 1048576, 4, 65521, 1048576, 3, 65521, 1048576, 2, 65521, 1048576, 1, 65521, 1048576, 0, 65521, 1048576, 65535, 65521, 1048576, 65534, 65521, 1048576, 65533, 65521, 1048576, 65532, 65521, 1048576, 65531, 65521, 1048576, 65530, 65521, 1048576, 65529, 65521, 1048576, 65528, 65521, 1048576, 65527, 65521, 1048576, 65526, 65521, 1048576, 65525, 65521, 1048576, 65524, 65521, 1048576, 65523, 65521, 1048576, 65522, 65521, 1048576, 65521, 65521, 1048576, 65521, 65522, 1048576, 65521, 65523, 1048576, 65522, 65522, 1048576, 16, 65528, 1048576, 16, 65527, 1048576, 16, 65526, 1048576, 15, 65526, 1048576, 15, 65527, 1048576, 15, 65528, 1048576, 15, 65525, 1048576, 15, 65524, 1048576, 15, 65523, 1048576, 15, 65522, 1048576, 15, 65521, 1048576, 15, 65520, 1048576, 15, 65519, 1048576, 16, 65519, 1048576, 16, 65520, 1048576, 16, 65521, 1048576, 16, 65525, 1048576, 16, 65524, 1048576, 16, 65523, 1048576, 16, 65522, 1048576, 14, 65519, 1048576, 13, 65519, 1048576, 12, 65519, 1048576, 11, 65519, 1048576, 10, 65519, 1048576, 9, 65519, 1048576, 8, 65519, 1048576, 7, 65519, 1048576, 6, 65519, 1048576, 5, 65519, 1048576, 4, 65519, 1048576, 3, 65519, 1048576, 2, 65519, 1048576, 1, 65519, 1048576, 0, 65519, 1048576, 65535, 65519, 1048576, 65534, 65519, 1048576, 65533, 65519, 1048576, 65532, 65519, 1048576, 65531, 65519, 1048576, 65530, 65519, 1048576, 65529, 65519, 1048576, 65528, 65519, 1048576, 65527, 65519, 1048576, 65526, 65519, 1048576, 65525, 65519, 1048576, 65524, 65519, 1048576, 65523, 65519, 1048576, 65522, 65519, 1048576, 65522, 65520, 1048576, 65521, 65520, 1048576, 65521, 65519, 1048576, 65523, 65520, 1048576, 65524, 65520, 1048576, 65525, 65520, 1048576, 65526, 65520, 1048576, 65527, 65520, 1048576, 65528, 65520, 1048576, 65529, 65520, 1048576, 65533, 65520, 1048576, 65532, 65520, 1048576, 65531, 65520, 1048576, 65530, 65520, 1048576, 65534, 65520, 1048576, 65535, 65520, 1048576, 0, 65520, 1048576, 1, 65520, 1048576, 2, 65520, 1048576, 3, 65520, 1048576, 4, 65520, 1048576, 5, 65520, 1048576, 6, 65520, 1048576, 7, 65520, 1048576, 8, 65520, 1048576, 9, 65520, 1048576, 10, 65520, 1048576, 11, 65520, 1048576, 12, 65520, 1048576, 13, 65520, 1048576, 14, 65520, 1048576, 65520, 65519, 1048576, 65519, 65519, 1048576, 65519, 65520, 1048576, 65520, 65520, 1048576, 65520, 65521, 1048576, 65520, 65522, 1048576, 65520, 65523, 1048576, 65520, 65524, 1048576, 65520, 65525, 1048576, 65520, 65526, 1048576, 65520, 65527, 1048576, 65519, 65527, 1048576, 65519, 65526, 1048576, 65519, 65525, 1048576, 65519, 65524, 1048576, 65519, 65523, 1048576, 65519, 65522, 1048576, 65519, 65521, 1048576, 65521, 65528, 1048576, 65520, 65528, 1048576, 65519, 65528, 1048576, 65519, 65529, 1048576, 65520, 65529, 1048576, 65520, 65530, 1048576, 65520, 65531, 1048576, 65520, 65532, 1048576, 65519, 65532, 1048576, 65519, 65531, 1048576, 65519, 65530, 1048576, 65519, 65533, 1048576, 65519, 65534, 1048576, 65519, 65535, 1048576, 65519, 0, 1048576, 65519, 1, 1048576, 65519, 2, 1048576, 65519, 3, 1048576, 65519, 4, 1048576, 65519, 5, 1048576, 65519, 6, 1048576, 65519, 7, 1048576, 65519, 8, 1048576, 65519, 9, 1048576, 65519, 10, 1048576, 65520, 10, 1048576, 65520, 11, 1048576, 65520, 12, 1048576, 65520, 13, 1048576, 65519, 15, 1048576, 65519, 14, 1048576, 65519, 13, 1048576, 65519, 12, 1048576, 65519, 11, 1048576, 65519, 16, 1048576, 65520, 16, 1048576, 65520, 15, 1048576, 65520, 14, 1048576, 65520, 9, 1048576, 65520, 8, 1048576, 65520, 7, 1048576, 65520, 6, 1048576, 65520, 5, 1048576, 65520, 4, 1048576, 65520, 3, 1048576, 65520, 2, 1048576, 65520, 1, 1048576, 65520, 0, 1048576, 65520, 65535, 1048576, 65520, 65534, 1048576, 65520, 65533, 1048576, 65525, 65535, 1048576, 65525, 0, 1048576, 65525, 1, 1048576, 65525, 2, 1048576, 65525, 3, 1048576, 65525, 4, 1048576, 65525, 5, 1048576, 65525, 6, 1048576, 65525, 7, 1048576, 65525, 8, 1048576, 65525, 9, 1048576, 65525, 10, 1048576, 65525, 11, 1048576, 65525, 12, 1048576, 65525, 13, 1048576, 65525, 14, 1048576, 65525, 15, 1048576, 65525, 16, 1048576, 65524, 15, 1048576, 65524, 16, 1048576, 65523, 16, 1048576, 65522, 16, 1048576, 65521, 16, 1048576, 65521, 15, 1048576, 65522, 15, 1048576, 65523, 14, 1048576, 65524, 14, 1048576, 65523, 15, 1048576, 65522, 14, 1048576, 65521, 14, 1048576, 65522, 13, 1048576, 65523, 13, 1048576, 65524, 13, 1048576, 65521, 13, 1048576, 65521, 12, 1048576, 65521, 11, 1048576, 65521, 10, 1048576, 65521, 9, 1048576, 65521, 7, 1048576, 65521, 6, 1048576, 65521, 5, 1048576, 65521, 4, 1048576, 65521, 3, 1048576, 65521, 2, 1048576, 65521, 65535, 1048576, 65521, 0, 1048576, 65521, 1, 1048576, 65521, 8, 1048576, 65522, 65535, 1048576, 65522, 65533, 1048576, 65522, 65532, 1048576, 65521, 65531, 1048576, 65521, 65530, 1048576, 65521, 65529, 1048576, 65522, 65529, 1048576, 65522, 65530, 1048576, 65522, 65531, 1048576, 65521, 65532, 1048576, 65521, 65533, 1048576, 65521, 65534, 1048576, 65523, 65532, 1048576, 65523, 65531, 1048576, 65523, 65530, 1048576, 65524, 65532, 1048576, 65524, 65531, 1048576, 65524, 65533, 1048576, 65524, 65534, 1048576, 65524, 65535, 1048576, 65524, 0, 1048576, 65524, 1, 1048576, 65524, 2, 1048576, 65524, 3, 1048576, 65524, 4, 1048576, 65524, 5, 1048576, 65524, 6, 1048576, 65524, 7, 1048576, 65524, 8, 1048576, 65524, 9, 1048576, 65524, 10, 1048576, 65524, 11, 1048576, 65524, 12, 1048576, 65523, 12, 1048576, 65522, 12, 1048576, 65522, 11, 1048576, 65522, 10, 1048576, 65522, 9, 1048576, 65522, 8, 1048576, 65522, 7, 1048576, 65522, 6, 1048576, 65522, 5, 1048576, 65522, 4, 1048576, 65522, 3, 1048576, 65522, 2, 1048576, 65522, 1, 1048576, 65522, 0, 1048576, 65522, 65534, 1048576, 65523, 65534, 1048576, 65523, 65535, 1048576, 65523, 65533, 1048576, 65523, 0, 1048576, 65523, 1, 1048576, 65523, 2, 1048576, 65523, 3, 1048576, 65523, 4, 1048576, 65523, 5, 1048576, 65523, 6, 1048576, 65523, 10, 1048576, 65523, 9, 1048576, 65523, 8, 1048576, 65523, 7, 1048576, 65523, 11, 1048576, 4, 14, 1048576, 3, 14, 1048576, 2, 14, 1048576, 1, 14, 1048576, 0, 14, 1048576, 65535, 14, 1048576, 65534, 14, 1048576, 65533, 14, 1048576, 65532, 14, 1048576, 65531, 14, 1048576, 65530, 14, 1048576, 65529, 14, 1048576, 65528, 14, 1048576, 65527, 14, 1048576, 65527, 15, 1048576, 65526, 15, 1048576, 65526, 16, 1048576, 65526, 14, 1048576, 65527, 16, 1048576, 65528, 16, 1048576, 65529, 16, 1048576, 65530, 16, 1048576, 65531, 16, 1048576, 65532, 16, 1048576, 65533, 16, 1048576, 65534, 16, 1048576, 65535, 16, 1048576, 0, 16, 1048576, 1, 16, 1048576, 2, 16, 1048576, 3, 16, 1048576, 4, 16, 1048576, 4, 15, 1048576, 3, 15, 1048576, 2, 15, 1048576, 1, 15, 1048576, 0, 15, 1048576, 65535, 15, 1048576, 65534, 15, 1048576, 65533, 15, 1048576, 65532, 15, 1048576, 65531, 15, 1048576, 65530, 15, 1048576, 65529, 15, 1048576, 65528, 15, 1048576, 65526, 9, 655361, 65527, 10, 655361, 65528, 11, 655361, 65529, 12, 655361, 65530, 13, 655361, 65529, 13, 655360, 65528, 13, 655360, 65527, 13, 655360, 65526, 13, 655360, 65526, 12, 655360, 65526, 11, 655360, 65526, 10, 655360, 65527, 11, 655360, 65527, 12, 655360, 65528, 12, 655360) +} + +[node name="CannyCat" parent="." instance=ExtResource("3_1802c")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10, 1, -2) +power_line_material = SubResource("StandardMaterial3D_8l41h") +power_scale = 40.0 + +[node name="Objects" type="Node3D" parent="."] + +[node name="GoalPost" parent="Objects" instance=ExtResource("4_108v6")] +transform = Transform3D(0.707107, 0, -0.707107, 0, 1, 0, 0.707107, 0, 0.707107, 10, 0, -10) + +[node name="SandPits" type="Node3D" parent="Objects"] + +[node name="SandPit" parent="Objects/SandPits" instance=ExtResource("5_0oe1q")] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, -7, 0, 8) +polygon = PackedVector2Array(-3, -2, 1, 0, 5, 6, -3, 6) + +[node name="SandPit2" parent="Objects/SandPits" instance=ExtResource("5_0oe1q")] +transform = Transform3D(-1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, 11, 0, 8) +polygon = PackedVector2Array(-3, -2, 1, 0, 5, 6, -3, 6) + +[node name="SandPit3" parent="Objects/SandPits" instance=ExtResource("5_0oe1q")] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, -12.5406, 0, -10.5995) +polygon = PackedVector2Array(2.33224, -4.27959, 0.718879, 0.533604, 2.00957, 6.26103, -3.74475, 6.12658, -3.52964, -4.44092) + +[node name="CSGMesh3D" type="CSGMesh3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.5, 0) +use_collision = true +collision_mask = 0 +mesh = SubResource("BoxMesh_25rxq") +material = SubResource("ShaderMaterial_tpmcl") diff --git a/levels/w1/1_04.scn b/levels/w1/1_04.scn new file mode 100644 index 0000000000000000000000000000000000000000..73439005f4f75a1697ec687ffb98e095ad15c87d GIT binary patch literal 4334 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 literal 0 HcmV?d00001 From 8165cda61cc92924f562677f627927294afa5242 Mon Sep 17 00:00:00 2001 From: Haze Weathers Date: Fri, 28 Feb 2025 05:31:27 -0500 Subject: [PATCH 4/4] initial uncanny work --- assets/textures/chaser/gskin0.png.import | 13 +++--- assets/textures/chaser/uncanny.png | Bin 0 -> 4507 bytes assets/textures/chaser/uncanny.png.import | 35 ++++++++++++++++ assets/textures/player/canny.png | Bin 5695 -> 4553 bytes levels/w1/1_01.tscn | 12 +++++- levels/w1/1_04.scn | Bin 4334 -> 0 bytes objects/canny_cat.tscn | 6 +-- objects/uncanny_cat.gd | 26 ++++++++++++ objects/uncanny_cat.gd.uid | 1 + objects/uncanny_cat.tscn | 47 ++++++++++++++++++++++ project.godot | 4 +- 11 files changed, 132 insertions(+), 12 deletions(-) create mode 100644 assets/textures/chaser/uncanny.png create mode 100644 assets/textures/chaser/uncanny.png.import delete mode 100644 levels/w1/1_04.scn create mode 100644 objects/uncanny_cat.gd create mode 100644 objects/uncanny_cat.gd.uid create mode 100644 objects/uncanny_cat.tscn diff --git a/assets/textures/chaser/gskin0.png.import b/assets/textures/chaser/gskin0.png.import index 6faca52..f333bd4 100644 --- a/assets/textures/chaser/gskin0.png.import +++ b/assets/textures/chaser/gskin0.png.import @@ -3,25 +3,26 @@ importer="texture" type="CompressedTexture2D" uid="uid://bu4dwr7l6pwcv" -path="res://.godot/imported/gskin0.png-181c0e3148c4126d978cd8f14eb610d1.ctex" +path.s3tc="res://.godot/imported/gskin0.png-181c0e3148c4126d978cd8f14eb610d1.s3tc.ctex" metadata={ -"vram_texture": false +"imported_formats": ["s3tc_bptc"], +"vram_texture": true } [deps] source_file="res://assets/textures/chaser/gskin0.png" -dest_files=["res://.godot/imported/gskin0.png-181c0e3148c4126d978cd8f14eb610d1.ctex"] +dest_files=["res://.godot/imported/gskin0.png-181c0e3148c4126d978cd8f14eb610d1.s3tc.ctex"] [params] -compress/mode=0 +compress/mode=2 compress/high_quality=false compress/lossy_quality=0.7 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="" @@ -31,4 +32,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 diff --git a/assets/textures/chaser/uncanny.png b/assets/textures/chaser/uncanny.png new file mode 100644 index 0000000000000000000000000000000000000000..9b2a51e50d6f191173a23a7fdc9954b14e6cfe5d GIT binary patch literal 4507 zcmeHKe^3)w9#6nd5ej;0Rgmi5VmUxJ*=!P$YzYViC29~!PHCsKZgyY78uG(rApt7& z5Oq+h$k}#E(bKtWty(Cpch_3<6w%VLR_Wk<*(W#X!h(58SbV#Jmpe@N;Zz@9Z|?*Kbx5EB8mN**DLg}wzE z1@<)P_e0}1h4=a!*y1Nj`sRZrG7t5O%$7ooQm9CUS`X_(0JOef-ZQvS!b#uh@!Cf4TDHv3V0rlTD9wQ3o3g=EYrs=Pq@1U+B>H z^koiQooS1i9{C);rZ)a{%i-*dgZ!+Pf%>jD=N~w6^~BWVlE%B+Z*2a^+p@$xJ>>Z8 zwBxJ#t`qisn_islK-Q#P$y@g~7yLWt40`d~>CV=toI9)gW^9c9?i6)_U)XpYe+kR3 ztEJQ4IKHrD#m;Fl@t-fNy4(GEP5sl+htgK{7B7fR=>6-Qdy{H{u1EJKU;0zwlxxqg zY1y_0YmfPJ!q#useywkvdhEwXp1xl4eCx#1HBFbVtv;8us&v+S@7-K|YPRoCWJ6~B zJE`wJo@LonJmGTBwO9L&eMpe)U)?!>vHN;t<7;i7=#F*%dh)#Gci!*rSbyZm{p#2M z{*Or;bNp=^zWlxsQZU5ZiiKj!QkwO;6%6OKBSpyV6VFSQkrnbWtP2U49XWZA5&x#+ zD30-*5nrjbkQQGqD&_O5{K#5WU}LLXtbxO`GNUs>G!VFvz+fSFnI}MpjJU*0gDnm# zaZG{;E+bwHX_V{rBTS>vC`ckN#8*&wW;B-J=NxpAY2hFRJQ?v)LGaN^WiS|21l0Fm?3FGFoy{RSU>L*c&`T&IT^dRTrlD|%wt3TxqTMP zFuf-*r~>Gr3^6{XNr4K2KP{3R6XHi}S@(4+zDZ~pj z%piv3o(wvv&Ia)GFwJzPBu2mCimEAyS7`ube+f`aZO`&uH zLac!@s76tlJpqC7ut=l=as>}O6axedQW2B}crQi8zLfWrhejrByc<~sMifn@(~vqfMHw_&off(g&GL?H3GrBH2nK{@#5@INX&hpqbNz@ByndV4TV}+Ei|+8W1+Ejv2#kpl z5bQQwhHXP-m>{7rhvO3IEMAUxRQ@ltczLi4z{8Q}^8whuQW^^1C@WeMehNR9@zPbo zFzHgz3>yw1z*L~H!oU@tVoMp16G8PDOxK}t{%2A_%{h>sLnOhmddMcdN=@h~I7GX~ zkgm1cNmfn%ggxMO2tme=vYntKXa(sh{e!|%q!Ub)G#mCMSc=5s0l^58A}IY&1yc?N ztQ2d;P{bL^|I#Ew0*op$ur53X#S3boa<~`{Y6c$slApn|_$9Z%u<=dCr0=*~<8qBj zfiZ!{vuj+gF)1)6@OXCp-{guOd7VNY_!Sg{m!&H^+Rwp@*381Cwmj(LXU~{NrRFbN z#5vjOnyQAzhSmeEO~2pR4098G`A-I9vY4r2lgpZ0X2RgZg4vSy@b!qqsQKwAsvn2f z>))77*|wA(_wtXLj$@M(g@L&Gn-}NSteeu`LYdxjP3%3K)*EyD-VZrnu-3nn*kU!Y z{TkV%#<^F?&e{v#JTx(ap7*S4aS9Ti={&l-D^w79r)OvUEZ3EUOVzILyEeCG>SX*D zdEDC`L4V<*H)+A zjyqz{ed39$?;7?ld8>y#x{rK&zVNZ#FRMR$;cUkzw;i^|xv@_sKb{odm`{F?^4Pt? z4^Q#UbzkeO$=WRI2J&BZDLdBYQBmg?Is50}zY4k@YabYh+4q8c*9)rU$#qSO??)VL W%Px9`oADi}C^P33nA&ny)&2+K;wPj4 literal 0 HcmV?d00001 diff --git a/assets/textures/chaser/uncanny.png.import b/assets/textures/chaser/uncanny.png.import new file mode 100644 index 0000000..ea7b766 --- /dev/null +++ b/assets/textures/chaser/uncanny.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c2a63sfnh6il" +path.s3tc="res://.godot/imported/uncanny.png-738ed8a4c24053be61a387bfe7510f94.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/chaser/uncanny.png" +dest_files=["res://.godot/imported/uncanny.png-738ed8a4c24053be61a387bfe7510f94.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/textures/player/canny.png b/assets/textures/player/canny.png index dad99fd2592626de8a675e19ca55122df0c9707d..cb2b51e73c7cb22c12269be372c9e0f3768cb91a 100644 GIT binary patch delta 1132 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 FV1jEC-uD0i diff --git a/levels/w1/1_01.tscn b/levels/w1/1_01.tscn index b1899b1..115c40c 100644 --- a/levels/w1/1_01.tscn +++ b/levels/w1/1_01.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=16 format=3 uid="uid://bkas0lj53glkn"] +[gd_scene load_steps=18 format=3 uid="uid://bkas0lj53glkn"] [ext_resource type="Script" uid="uid://vydhlp6ju8bw" path="res://levels/level.gd" id="1_r1ilo"] [ext_resource type="Script" uid="uid://hmtamckjm4vm" path="res://levels/level_info.gd" id="2_61qek"] @@ -8,10 +8,12 @@ [ext_resource type="Shader" uid="uid://c3y1ht34ep01k" path="res://assets/shaders/horizontal_world_uv.gdshader" id="6_ka4lg"] [ext_resource type="PackedScene" uid="uid://bfic5n608nc5j" path="res://objects/sand_pit.tscn" id="6_rlgmy"] [ext_resource type="Texture2D" uid="uid://cpmi7w2fwm2sf" path="res://assets/textures/world/checker_grass.png" id="7_3jvq7"] +[ext_resource type="PackedScene" uid="uid://bndtsprfwrkau" path="res://objects/uncanny_cat.tscn" id="7_qskty"] +[ext_resource type="PackedScene" uid="uid://13qlrib2dk36" path="res://objects/waterman_pole.tscn" id="10_qrwyj"] [sub_resource type="Resource" id="Resource_qskty"] script = ExtResource("2_61qek") -title = "Welcome To Poo Central!" +title = "Welcome To Golf Central!" difficulty = 1 metadata/_custom_type_script = "uid://hmtamckjm4vm" @@ -93,9 +95,15 @@ polygon = PackedVector2Array(-3, -2, 1, 0, 5, 6, -3, 6) transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, -12.5406, 0, -10.5995) polygon = PackedVector2Array(2.33224, -4.27959, 0.718879, 0.533604, 2.00957, 6.26103, -3.74475, 6.12658, -3.52964, -4.44092) +[node name="UncannyCat" parent="Objects" instance=ExtResource("7_qskty")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 3.89785, 0) + [node name="CSGMesh3D" type="CSGMesh3D" parent="."] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.5, 0) use_collision = true collision_mask = 0 mesh = SubResource("BoxMesh_25rxq") material = SubResource("ShaderMaterial_tpmcl") + +[node name="WatermanPole" parent="." instance=ExtResource("10_qrwyj")] +transform = Transform3D(1, 0, 0, 0, 8, 0, 0, 0, 1, 0, 0, 4) diff --git a/levels/w1/1_04.scn b/levels/w1/1_04.scn deleted file mode 100644 index 73439005f4f75a1697ec687ffb98e095ad15c87d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4334 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 diff --git a/objects/canny_cat.tscn b/objects/canny_cat.tscn index 754876e..2140f9b 100644 --- a/objects/canny_cat.tscn +++ b/objects/canny_cat.tscn @@ -52,7 +52,7 @@ resource_name = "Not Moving" script = ExtResource("8_d5slg") expression = "velocity.is_zero_approx()" -[node name="CannyCat" type="CharacterBody3D" node_paths=PackedStringArray("state_chart", "graphics", "power_indicator", "camera_arm", "collision_shape")] +[node name="CannyCat" type="CharacterBody3D" node_paths=PackedStringArray("state_chart", "graphics", "power_indicator", "camera_arm", "collision_shape") groups=["chaser_target"]] process_priority = -100 process_physics_priority = -100 collision_layer = 16 @@ -87,7 +87,7 @@ shape = SubResource("SphereShape3D_4o01j") [node name="Graphics" type="Node3D" parent="."] [node name="CannySprite" type="Sprite3D" parent="Graphics"] -pixel_size = 0.0156 +pixel_size = 0.0313 billboard = 1 texture_filter = 0 texture = ExtResource("1_cp4br") @@ -136,7 +136,7 @@ mesh = SubResource("CylinderMesh_b16dl") [node name="CameraArm" type="SpringArm3D" parent="."] transform = Transform3D(1, 0, 0, 0, 0.5, 0.866025, 0, -0.866025, 0.5, 0, 0, 0) collision_mask = 8 -spring_length = 8.0 +spring_length = 7.0 [node name="Camera3D" type="Camera3D" parent="CameraArm"] current = true diff --git a/objects/uncanny_cat.gd b/objects/uncanny_cat.gd new file mode 100644 index 0000000..baa8cff --- /dev/null +++ b/objects/uncanny_cat.gd @@ -0,0 +1,26 @@ +extends CharacterBody3D + + +@export var acceleration: float +@export var speed: float +@export var vertical_speed: float + + +func _physics_process(delta: float) -> void: + var target: Node3D = null + for node in get_tree().get_nodes_in_group(&"chaser_target"): + if node is Node3D: + if not target or ( + global_position.distance_squared_to(node.global_position) < + global_position.distance_squared_to(target.global_position) + ): + target = node + + if target: + velocity += global_position.direction_to(target.global_position) * acceleration * delta + velocity = velocity.limit_length(speed) + velocity.y = (target.global_position.y - global_position.y) * vertical_speed + + var col = move_and_collide(velocity * delta) + if col: + velocity = velocity.bounce(col.get_normal()) diff --git a/objects/uncanny_cat.gd.uid b/objects/uncanny_cat.gd.uid new file mode 100644 index 0000000..d50f6ae --- /dev/null +++ b/objects/uncanny_cat.gd.uid @@ -0,0 +1 @@ +uid://1mhmcaluavhg diff --git a/objects/uncanny_cat.tscn b/objects/uncanny_cat.tscn new file mode 100644 index 0000000..c36c2ad --- /dev/null +++ b/objects/uncanny_cat.tscn @@ -0,0 +1,47 @@ +[gd_scene load_steps=6 format=3 uid="uid://bndtsprfwrkau"] + +[ext_resource type="Script" uid="uid://1mhmcaluavhg" path="res://objects/uncanny_cat.gd" id="1_bsm3e"] +[ext_resource type="Texture2D" uid="uid://c2a63sfnh6il" path="res://assets/textures/chaser/uncanny.png" id="2_eotxf"] + +[sub_resource type="SphereShape3D" id="SphereShape3D_eotxf"] +radius = 0.45 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_eotxf"] +transparency = 3 +alpha_hash_scale = 1.0 +alpha_antialiasing_mode = 0 +no_depth_test = true +shading_mode = 0 +albedo_color = Color(1, 0, 0, 0.501961) +albedo_texture = ExtResource("2_eotxf") +texture_filter = 0 +billboard_mode = 1 + +[sub_resource type="SphereShape3D" id="SphereShape3D_ixuei"] + +[node name="UncannyCat" type="CharacterBody3D"] +collision_layer = 32 +collision_mask = 32 +motion_mode = 1 +script = ExtResource("1_bsm3e") +acceleration = 0.6 +speed = 1.5 +vertical_speed = 0.5 + +[node name="CollisionShape3D" type="CollisionShape3D" parent="."] +shape = SubResource("SphereShape3D_eotxf") + +[node name="Sprite3D" type="Sprite3D" parent="."] +material_overlay = SubResource("StandardMaterial3D_eotxf") +pixel_size = 0.0313 +billboard = 1 +texture_filter = 0 +texture = ExtResource("2_eotxf") + +[node name="PlayerDetector" type="Area3D" parent="."] +collision_layer = 0 +collision_mask = 16 +monitorable = false + +[node name="CollisionShape3D" type="CollisionShape3D" parent="PlayerDetector"] +shape = SubResource("SphereShape3D_ixuei") diff --git a/project.godot b/project.godot index 8a754ec..391a0aa 100644 --- a/project.godot +++ b/project.godot @@ -11,7 +11,7 @@ config_version=5 [application] config/name="ucg-3d" -run/main_scene="res://test_scene.tscn" +run/main_scene="uid://bkas0lj53glkn" config/features=PackedStringArray("4.4", "GL Compatibility") config/icon="res://icon.svg" @@ -36,6 +36,7 @@ import/blender/enabled=false [global_group] friction_floor="" +chaser_target="Targets that chaser enemies will lock on to." [input] @@ -51,6 +52,7 @@ charge_shot={ 3d_physics/layer_2="friction" 3d_physics/layer_3="water" 3d_physics/layer_5="player" +3d_physics/layer_6="uncanny" [rendering]