diff --git a/prefabs/Player3D.tscn b/prefabs/Player3D.tscn index 7e4fb5a..2427536 100644 --- a/prefabs/Player3D.tscn +++ b/prefabs/Player3D.tscn @@ -1,13 +1,17 @@ -[gd_scene load_steps=5 format=3 uid="uid://dbd1niu3tp8y5"] +[gd_scene load_steps=7 format=3 uid="uid://dbd1niu3tp8y5"] [ext_resource type="Script" uid="uid://b4ugrget2x6lb" path="res://scripts/CSharp/Common/CharacterControls/Player3D.cs" id="1_3trg2"] [ext_resource type="Texture2D" uid="uid://duaideiajsu8r" path="res://art/Characters/Vesna/babushka concept art vesna.png" id="2_3trg2"] [ext_resource type="Script" uid="uid://r5tahuqvbucy" path="res://scripts/CSharp/Common/Camera/CameraPivot.cs" id="3_3trg2"] +[ext_resource type="Texture2D" uid="uid://c4ggew55w0icj" path="res://art/farm/farming/farmobjekte/harke.png" id="4_kngqo"] +[ext_resource type="Script" uid="uid://b1sscdr4ptec8" path="res://scripts/CSharp/Common/Farming/FarmingControls.cs" id="4_q5t2e"] [sub_resource type="CapsuleShape3D" id="CapsuleShape3D_1vdrh"] height = 1.5 -[node name="Player3d" type="Node3D"] +[node name="Player3d" type="Node3D" node_paths=PackedStringArray("_hoeSprite")] +script = ExtResource("4_q5t2e") +_hoeSprite = NodePath("CharacterBody3D/Farming/Hoe") [node name="CharacterBody3D" type="CharacterBody3D" parent="." node_paths=PackedStringArray("_camera", "_frontSprite", "_sideSprite")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.1, 0) @@ -23,7 +27,7 @@ _sideSprite = NodePath("SideSprite") transform = Transform3D(0.15, 0, 0, 0, 0.15, 0, 0, 0, 0.15, 0, 0, 0) billboard = 1 shaded = true -render_priority = 100 +render_priority = 50 texture = ExtResource("2_3trg2") region_enabled = true region_rect = Rect2(52, 20, 648, 1175) @@ -33,7 +37,7 @@ transform = Transform3D(0.15, 0, 0, 0, 0.15, 0, 0, 0, 0.15, 0, 0, 0) visible = false billboard = 1 shaded = true -render_priority = 100 +render_priority = 50 texture = ExtResource("2_3trg2") region_enabled = true region_rect = Rect2(803, 17, 663, 1161) @@ -53,4 +57,11 @@ _subPivot = NodePath("SubPivot") transform = Transform3D(1, 0, 0, 0, 0.933581, 0.358368, 0, -0.358368, 0.933581, 0, 1, 1.734) fov = 70.0 -[node name="FarmingMechanic" type="Node3D" parent="CharacterBody3D"] +[node name="Farming" type="Node3D" parent="CharacterBody3D"] + +[node name="Hoe" type="Sprite3D" parent="CharacterBody3D/Farming"] +visible = false +pixel_size = 0.002 +billboard = 1 +render_priority = 51 +texture = ExtResource("4_kngqo") diff --git a/prefabs/interaction_area.tscn b/prefabs/interaction_area.tscn index 91c34d4..e232f86 100644 --- a/prefabs/interaction_area.tscn +++ b/prefabs/interaction_area.tscn @@ -4,6 +4,7 @@ [sub_resource type="SphereShape3D" id="SphereShape3D_i8sim"] resource_local_to_scene = true +radius = 2.0 [node name="InteractionArea" type="Node3D" node_paths=PackedStringArray("_area", "_label")] script = ExtResource("1_b15wn") @@ -23,9 +24,11 @@ pixel_size = 0.01 billboard = 1 no_depth_test = true fixed_size = true +render_priority = 100 +outline_render_priority = 99 text = "[E]" -font_size = 60 -outline_size = 10 +font_size = 20 +outline_size = 8 [connection signal="body_entered" from="Area3D" to="." method="OnPlayerEntered"] [connection signal="body_exited" from="Area3D" to="." method="OnPlayerExited"] diff --git a/prefabs/interactions/sprite_switcher.gdshader b/prefabs/interactions/sprite_switcher.gdshader new file mode 100644 index 0000000..d96ec45 --- /dev/null +++ b/prefabs/interactions/sprite_switcher.gdshader @@ -0,0 +1,14 @@ +shader_type spatial; + +void vertex() { + // Called for every vertex the material is visible on. +} + +void fragment() { + // Called for every pixel the material is visible on. +} + +//void light() { +// // Called for every pixel for every light affecting the material. +// // Uncomment to replace the default light processing function with this one. +//} diff --git a/prefabs/interactions/sprite_switcher.gdshader.uid b/prefabs/interactions/sprite_switcher.gdshader.uid new file mode 100644 index 0000000..9ee517d --- /dev/null +++ b/prefabs/interactions/sprite_switcher.gdshader.uid @@ -0,0 +1 @@ +uid://dn6jmboabfrb2 diff --git a/prefabs/interactions/sprite_switcher.tscn b/prefabs/interactions/sprite_switcher.tscn new file mode 100644 index 0000000..f69e2cb --- /dev/null +++ b/prefabs/interactions/sprite_switcher.tscn @@ -0,0 +1,40 @@ +[gd_scene load_steps=5 format=3 uid="uid://cf0jpuio8tgim"] + +[ext_resource type="Script" uid="uid://v34pl0nlp4x" path="res://scripts/CSharp/Common/SpriteSwitcher.cs" id="1_scmhv"] +[ext_resource type="Texture2D" uid="uid://c4ggew55w0icj" path="res://art/farm/farming/farmobjekte/harke.png" id="2_jv400"] + +[sub_resource type="SphereMesh" id="SphereMesh_0ptl4"] + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_scmhv"] +transparency = 1 +blend_mode = 3 +emission_enabled = true +emission = Color(1, 1, 1, 1) + +[node name="SpriteSwitcher" type="Node3D" node_paths=PackedStringArray("_trueSprite", "_falseSprite")] +script = ExtResource("1_scmhv") +_trueSprite = NodePath("Hoe on") +_falseSprite = NodePath("Hoe off") + +[node name="Hoe on" type="Sprite3D" parent="."] +modulate = Color(0, 0.996078, 0, 1) +pixel_size = 0.001 +billboard = 1 +texture = ExtResource("2_jv400") +region_rect = Rect2(484, 143, 365, 1317) + +[node name="Hoe off" type="Sprite3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, -8.47033e-22, 0, 8.47033e-22, 1, 0.106585, 0, 0.0173626) +visible = false +modulate = Color(1, 0, 0, 1) +pixel_size = 0.001 +billboard = 1 +texture = ExtResource("2_jv400") +region_rect = Rect2(421, 0, 539, 965) + +[node name="CSGMesh3D" type="CSGMesh3D" parent="."] +transparency = 0.5 +cast_shadow = 0 +calculate_tangents = false +mesh = SubResource("SphereMesh_0ptl4") +material = SubResource("StandardMaterial3D_scmhv") diff --git a/scenes/Babushka_scene_farm_vesna.tscn b/scenes/Babushka_scene_farm_vesna.tscn index 6f42cc2..6010b2f 100644 --- a/scenes/Babushka_scene_farm_vesna.tscn +++ b/scenes/Babushka_scene_farm_vesna.tscn @@ -5,8 +5,7 @@ [ext_resource type="Texture2D" uid="uid://lvhbicmwqab5" path="res://art/farm/tilable grounds/böden/fruchtbarer wilder trockender boden.png" id="3_0ptl4"] [ext_resource type="PackedScene" uid="uid://bjhj1wa5olwcu" path="res://prefabs/farming/base_plant.tscn" id="3_oyw0x"] [ext_resource type="PackedScene" uid="uid://ob04y3syvo0e" path="res://prefabs/interaction_area.tscn" id="4_r4sre"] -[ext_resource type="Texture2D" uid="uid://c4ggew55w0icj" path="res://art/farm/farming/farmobjekte/harke.png" id="5_0ptl4"] -[ext_resource type="Script" uid="uid://v34pl0nlp4x" path="res://scripts/CSharp/Common/SpriteSwitcher.cs" id="6_jg3xi"] +[ext_resource type="PackedScene" uid="uid://cf0jpuio8tgim" path="res://prefabs/interactions/sprite_switcher.tscn" id="6_r4sre"] [sub_resource type="PlaneMesh" id="PlaneMesh_8yprl"] @@ -16,6 +15,10 @@ albedo_color = Color(0.505882, 0.588235, 0.494118, 1) [sub_resource type="BoxShape3D" id="BoxShape3D_t58di"] size = Vector3(2.01563, 0.160522, 2.00824) +[sub_resource type="SphereShape3D" id="SphereShape3D_0ptl4"] +resource_local_to_scene = true +radius = 1.0 + [node name="SceneFarmVesna" type="Node3D"] [node name="MeshInstance3D" type="MeshInstance3D" parent="."] @@ -45,26 +48,14 @@ transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 0, 0) top_level = true [node name="HoePickup" parent="." instance=ExtResource("4_r4sre")] -transform = Transform3D(0.5, 0, 0, 0, 0.5, -5.32907e-15, 0, 5.32907e-15, 0.5, -4.32699, 1.8523, -3.4472) - -[node name="Hoe on" type="Sprite3D" parent="HoePickup"] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.138896, 0) -modulate = Color(0, 0.996078, 0, 1) -billboard = 1 -texture = ExtResource("5_0ptl4") -region_rect = Rect2(484, 143, 365, 1317) - -[node name="Hoe off" type="Sprite3D" parent="HoePickup"] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.138896, 0) -visible = false -modulate = Color(1, 0, 0, 1) -billboard = 1 -texture = ExtResource("5_0ptl4") -region_rect = Rect2(421, 0, 539, 965) - -[node name="SpriteSwitcher" type="Node3D" parent="HoePickup" node_paths=PackedStringArray("_TrueSprite", "_FalseSprite")] -script = ExtResource("6_jg3xi") -_TrueSprite = NodePath("../Hoe on") -_FalseSprite = NodePath("../Hoe off") - -[connection signal="Interacted" from="HoePickup" to="HoePickup/SpriteSwitcher" method="SwitchState"] +transform = Transform3D(1, 0, 0, 0, 1, -1.06581e-14, 0, 1.06581e-14, 1, -4.327, 1, -3.447) + +[node name="CollisionShape3D" parent="HoePickup/Area3D" index="0"] +shape = SubResource("SphereShape3D_0ptl4") + +[node name="SpriteSwitcher Hoe" parent="HoePickup" instance=ExtResource("6_r4sre")] + +[connection signal="Interacted" from="HoePickup" to="HoePickup/SpriteSwitcher Hoe" method="SwitchState"] +[connection signal="Switch" from="HoePickup/SpriteSwitcher Hoe" to="Player3d" method="ActivateHoe"] + +[editable path="HoePickup"] diff --git a/scripts/CSharp/Common/Farming/FarmingControls.cs b/scripts/CSharp/Common/Farming/FarmingControls.cs index e28286e..fd42111 100644 --- a/scripts/CSharp/Common/Farming/FarmingControls.cs +++ b/scripts/CSharp/Common/Farming/FarmingControls.cs @@ -4,5 +4,14 @@ namespace Babushka.scripts.CSharp.Common.Farming; public partial class FarmingControls : Node3D { + [Export] private Sprite3D _hoeSprite; + private bool _hoeInHand = false; + + public void ActivateHoe(bool activate) + { + _hoeSprite.Visible = !activate; + _hoeInHand = !activate; + } + } \ No newline at end of file diff --git a/scripts/CSharp/Common/SpriteSwitcher.cs b/scripts/CSharp/Common/SpriteSwitcher.cs index 92f07ea..ad47e96 100644 --- a/scripts/CSharp/Common/SpriteSwitcher.cs +++ b/scripts/CSharp/Common/SpriteSwitcher.cs @@ -7,9 +7,12 @@ namespace Babushka.scripts.CSharp.Common; /// public partial class SpriteSwitcher : Node3D { - [Export] private Sprite3D _TrueSprite; - [Export] private Sprite3D _FalseSprite; + [Export] private Sprite3D _trueSprite; + [Export] private Sprite3D _falseSprite; [Export] private bool _state = true; + + [Signal] + public delegate void SwitchEventHandler(bool state); public override void _Ready() { @@ -19,18 +22,15 @@ public partial class SpriteSwitcher : Node3D public void SwitchState() { _state = !_state; + EmitSignal(SignalName.Switch, _state); SetState(); } private void SetState() { - if (_state) - { - _TrueSprite.Visible = true; - } - else - { - _FalseSprite.Visible = false; - } + if(_trueSprite != null) + _trueSprite.Visible = _state; + if(_falseSprite != null) + _falseSprite.Visible = !_state; } } \ No newline at end of file