🚧 WIP: trying to rework the detection system (it fails)
This commit is contained in:
+4
-2
@@ -9,7 +9,7 @@ custom_features=""
|
|||||||
export_filter="all_resources"
|
export_filter="all_resources"
|
||||||
include_filter=""
|
include_filter=""
|
||||||
exclude_filter=""
|
exclude_filter=""
|
||||||
export_path="_builds/Babushka_win_0_5/Babushka.exe"
|
export_path="_builds/Babushka_showcase_6a/Babushka.exe"
|
||||||
patches=PackedStringArray()
|
patches=PackedStringArray()
|
||||||
encryption_include_filters=""
|
encryption_include_filters=""
|
||||||
encryption_exclude_filters=""
|
encryption_exclude_filters=""
|
||||||
@@ -26,6 +26,7 @@ debug/export_console_wrapper=1
|
|||||||
binary_format/embed_pck=false
|
binary_format/embed_pck=false
|
||||||
texture_format/s3tc_bptc=true
|
texture_format/s3tc_bptc=true
|
||||||
texture_format/etc2_astc=false
|
texture_format/etc2_astc=false
|
||||||
|
shader_baker/enabled=false
|
||||||
binary_format/architecture="x86_64"
|
binary_format/architecture="x86_64"
|
||||||
codesign/enable=false
|
codesign/enable=false
|
||||||
codesign/timestamp=true
|
codesign/timestamp=true
|
||||||
@@ -79,7 +80,7 @@ custom_features=""
|
|||||||
export_filter="all_resources"
|
export_filter="all_resources"
|
||||||
include_filter=""
|
include_filter=""
|
||||||
exclude_filter=""
|
exclude_filter=""
|
||||||
export_path="_builds/Babushka_linux_0_5/Babushka.x86_64"
|
export_path="_builds/Babushka_showcase_lux_06a/Babushka.x86_64"
|
||||||
patches=PackedStringArray()
|
patches=PackedStringArray()
|
||||||
encryption_include_filters=""
|
encryption_include_filters=""
|
||||||
encryption_exclude_filters=""
|
encryption_exclude_filters=""
|
||||||
@@ -96,6 +97,7 @@ debug/export_console_wrapper=1
|
|||||||
binary_format/embed_pck=false
|
binary_format/embed_pck=false
|
||||||
texture_format/s3tc_bptc=true
|
texture_format/s3tc_bptc=true
|
||||||
texture_format/etc2_astc=false
|
texture_format/etc2_astc=false
|
||||||
|
shader_baker/enabled=false
|
||||||
binary_format/architecture="x86_64"
|
binary_format/architecture="x86_64"
|
||||||
ssh_remote_deploy/enabled=false
|
ssh_remote_deploy/enabled=false
|
||||||
ssh_remote_deploy/host="user@host_ip"
|
ssh_remote_deploy/host="user@host_ip"
|
||||||
|
|||||||
@@ -1,12 +1,20 @@
|
|||||||
[gd_scene load_steps=3 format=3 uid="uid://pflu0uaig7vv"]
|
[gd_scene load_steps=4 format=3 uid="uid://pflu0uaig7vv"]
|
||||||
|
|
||||||
[ext_resource type="Script" uid="uid://ccc6m6c5khd2x" path="res://scripts/CSharp/Common/CharacterControls/DetectionCross.cs" id="1_va8tx"]
|
[ext_resource type="Script" uid="uid://ccc6m6c5khd2x" path="res://scripts/CSharp/Common/CharacterControls/DetectionCross.cs" id="1_va8tx"]
|
||||||
[ext_resource type="PackedScene" uid="uid://dugr6ff1g7hi0" path="res://prefabs/interactions/detector.tscn" id="2_8hh05"]
|
[ext_resource type="PackedScene" uid="uid://dugr6ff1g7hi0" path="res://prefabs/interactions/detector.tscn" id="2_8hh05"]
|
||||||
|
[ext_resource type="Script" uid="uid://b4n0nlu4ckqga" path="res://scripts/CSharp/Common/CharacterControls/RaycastDetector.cs" id="2_va8tx"]
|
||||||
|
|
||||||
[node name="DetectionCross" type="Node2D" node_paths=PackedStringArray("_detector")]
|
[node name="DetectionCross" type="Node2D" node_paths=PackedStringArray("_collider", "_detector")]
|
||||||
script = ExtResource("1_va8tx")
|
script = ExtResource("1_va8tx")
|
||||||
_detector = NodePath("detector")
|
_collider = NodePath("detector")
|
||||||
_xOffset = 400.0
|
_detector = NodePath("Raycast")
|
||||||
_yOffset = 300.0
|
_xOffset = 200.0
|
||||||
|
_yOffset = 200.0
|
||||||
|
|
||||||
|
[node name="Raycast" type="RayCast2D" parent="."]
|
||||||
|
top_level = true
|
||||||
|
target_position = Vector2(257, -149)
|
||||||
|
collide_with_areas = true
|
||||||
|
script = ExtResource("2_va8tx")
|
||||||
|
|
||||||
[node name="detector" parent="." instance=ExtResource("2_8hh05")]
|
[node name="detector" parent="." instance=ExtResource("2_8hh05")]
|
||||||
|
|||||||
@@ -2,13 +2,13 @@
|
|||||||
|
|
||||||
[ext_resource type="Script" uid="uid://c3pd60biootsx" path="res://scripts/CSharp/Common/CharacterControls/Detector.cs" id="1_6pib0"]
|
[ext_resource type="Script" uid="uid://c3pd60biootsx" path="res://scripts/CSharp/Common/CharacterControls/Detector.cs" id="1_6pib0"]
|
||||||
|
|
||||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_qwv4c"]
|
[sub_resource type="CircleShape2D" id="CircleShape2D_6pib0"]
|
||||||
size = Vector2(100, 400)
|
radius = 200.0
|
||||||
|
|
||||||
[node name="detector" type="Area2D"]
|
[node name="detector" type="Area2D"]
|
||||||
collision_layer = 4
|
collision_layer = 4
|
||||||
script = ExtResource("1_6pib0")
|
script = ExtResource("1_6pib0")
|
||||||
|
|
||||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
|
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
|
||||||
shape = SubResource("RectangleShape2D_qwv4c")
|
shape = SubResource("CircleShape2D_6pib0")
|
||||||
debug_color = Color(0.9459047, 7.2196126e-06, 0.5925879, 0.41960785)
|
debug_color = Color(0.9459047, 7.2196126e-06, 0.5925879, 0.41960785)
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
[gd_scene load_steps=6 format=3 uid="uid://cqc72e4hq6bcd"]
|
[gd_scene load_steps=7 format=3 uid="uid://cqc72e4hq6bcd"]
|
||||||
|
|
||||||
[ext_resource type="Script" uid="uid://ckp413wrub5fm" path="res://scripts/CSharp/Common/CharacterControls/InteractionArea2D.cs" id="1_5ajrf"]
|
[ext_resource type="Script" uid="uid://ckp413wrub5fm" path="res://scripts/CSharp/Common/CharacterControls/InteractionArea2D.cs" id="1_5ajrf"]
|
||||||
|
[ext_resource type="Resource" uid="uid://clwqh3w5aqi5e" path="res://resources/low code/interactables/var_interactableToTrigger.tres" id="2_o1drf"]
|
||||||
[ext_resource type="Material" uid="uid://blch5kdhkbj75" path="res://art/materials/simple_interactable_outline.tres" id="2_qoey7"]
|
[ext_resource type="Material" uid="uid://blch5kdhkbj75" path="res://art/materials/simple_interactable_outline.tres" id="2_qoey7"]
|
||||||
[ext_resource type="Script" uid="uid://cp2q4k62sjo6h" path="res://scripts/CSharp/Common/CharacterControls/DetectableInteractionArea.cs" id="3_2wrrq"]
|
[ext_resource type="Script" uid="uid://cp2q4k62sjo6h" path="res://scripts/CSharp/Common/CharacterControls/DetectableInteractionArea.cs" id="3_2wrrq"]
|
||||||
|
|
||||||
@@ -13,13 +14,15 @@ default_font_size = 30
|
|||||||
|
|
||||||
[node name="InteractionArea" type="Node2D" node_paths=PackedStringArray("_area", "_label")]
|
[node name="InteractionArea" type="Node2D" node_paths=PackedStringArray("_area", "_label")]
|
||||||
script = ExtResource("1_5ajrf")
|
script = ExtResource("1_5ajrf")
|
||||||
|
_interactableToTrigger = ExtResource("2_o1drf")
|
||||||
_area = NodePath("Area2D")
|
_area = NodePath("Area2D")
|
||||||
_label = NodePath("Area2D/CanvasLayer/MarginContainer/Label")
|
_label = NodePath("Area2D/CanvasLayer/MarginContainer/Label")
|
||||||
_outlineMaterial = ExtResource("2_qoey7")
|
_outlineMaterial = ExtResource("2_qoey7")
|
||||||
|
|
||||||
[node name="Area2D" type="Area2D" parent="."]
|
[node name="Area2D" type="Area2D" parent="." node_paths=PackedStringArray("interactionArea2D")]
|
||||||
collision_mask = 4
|
collision_mask = 4
|
||||||
script = ExtResource("3_2wrrq")
|
script = ExtResource("3_2wrrq")
|
||||||
|
interactionArea2D = NodePath("..")
|
||||||
|
|
||||||
[node name="CollisionShape3D" type="CollisionShape2D" parent="Area2D"]
|
[node name="CollisionShape3D" type="CollisionShape2D" parent="Area2D"]
|
||||||
shape = SubResource("CircleShape2D_npluf")
|
shape = SubResource("CircleShape2D_npluf")
|
||||||
|
|||||||
@@ -176,6 +176,7 @@ directories/tres_directory={
|
|||||||
"unselected_stylebox": "res://addons/dialogic/Editor/Events/styles/unselected_stylebox.tres",
|
"unselected_stylebox": "res://addons/dialogic/Editor/Events/styles/unselected_stylebox.tres",
|
||||||
"var_ColorTestValue": "res://resources/low code/test/var_ColorTestValue.tres",
|
"var_ColorTestValue": "res://resources/low code/test/var_ColorTestValue.tres",
|
||||||
"var_Counter": "res://resources/low code/test/var_Counter.tres",
|
"var_Counter": "res://resources/low code/test/var_Counter.tres",
|
||||||
|
"var_interactableToTrigger": "res://resources/low code/interactables/var_interactableToTrigger.tres",
|
||||||
"var_sceneNameProvider": "res://resources/low code/farming/var_sceneNameProvider.tres",
|
"var_sceneNameProvider": "res://resources/low code/farming/var_sceneNameProvider.tres",
|
||||||
"var_wateredFieldPosition": "res://resources/low code/farming/var_wateredFieldPosition.tres",
|
"var_wateredFieldPosition": "res://resources/low code/farming/var_wateredFieldPosition.tres",
|
||||||
"vesna_style": "res://addons/dialogic/vesna_style.tres",
|
"vesna_style": "res://addons/dialogic/vesna_style.tres",
|
||||||
|
|||||||
@@ -0,0 +1,8 @@
|
|||||||
|
[gd_resource type="Resource" script_class="VariableResource" load_steps=2 format=3 uid="uid://clwqh3w5aqi5e"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" uid="uid://dtvx2cakx0bey" path="res://scripts/CSharp/Low Code/Variables/VariableResource.cs" id="1_casar"]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
script = ExtResource("1_casar")
|
||||||
|
Payload = null
|
||||||
|
metadata/_custom_type_script = "uid://dtvx2cakx0bey"
|
||||||
@@ -7,4 +7,16 @@ namespace Babushka.scripts.CSharp.Common.CharacterControls;
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public partial class DetectableInteractionArea : Area2D
|
public partial class DetectableInteractionArea : Area2D
|
||||||
{
|
{
|
||||||
|
[Export] public InteractionArea2D interactionArea2D;
|
||||||
|
|
||||||
|
public void Detected()
|
||||||
|
{
|
||||||
|
GD.Print("Detected " + interactionArea2D.GetParent().Name);
|
||||||
|
interactionArea2D.IsSelectedByDetector = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void NoLongerDetected()
|
||||||
|
{
|
||||||
|
interactionArea2D.IsSelectedByDetector = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -7,7 +7,8 @@ namespace Babushka.scripts.CSharp.Common.CharacterControls;
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public partial class DetectionCross : Node2D
|
public partial class DetectionCross : Node2D
|
||||||
{
|
{
|
||||||
[Export] private Detector _detector;
|
[Export] private Detector _collider;
|
||||||
|
[Export] private RaycastDetector _detector;
|
||||||
[Export] private float _xOffset;
|
[Export] private float _xOffset;
|
||||||
[Export] private float _yOffset;
|
[Export] private float _yOffset;
|
||||||
|
|
||||||
@@ -17,6 +18,8 @@ public partial class DetectionCross : Node2D
|
|||||||
/// <param name="direction"></param>
|
/// <param name="direction"></param>
|
||||||
public void SetDirection(Vector2 direction)
|
public void SetDirection(Vector2 direction)
|
||||||
{
|
{
|
||||||
_detector.Position = new Vector2(direction.X * _xOffset, direction.Y * _yOffset);
|
Vector2 newPos = new Vector2(direction.X * _xOffset, direction.Y * _yOffset);
|
||||||
|
_collider.GlobalPosition = newPos;
|
||||||
|
_detector.TargetPosition = newPos;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
using Babushka.scripts.CSharp.Common.Services;
|
using Babushka.scripts.CSharp.Common.Services;
|
||||||
using Godot;
|
using Godot;
|
||||||
|
using Godot.Collections;
|
||||||
|
|
||||||
namespace Babushka.scripts.CSharp.Common.CharacterControls;
|
namespace Babushka.scripts.CSharp.Common.CharacterControls;
|
||||||
|
|
||||||
@@ -41,7 +42,7 @@ public partial class Detector : Area2D
|
|||||||
/// Called every time this node enters an Area2D.
|
/// Called every time this node enters an Area2D.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="area"></param>
|
/// <param name="area"></param>
|
||||||
public void OnEnteredInteractable(Node area)
|
public void OnEnteredInteractable(Area2D area)
|
||||||
{
|
{
|
||||||
if (!_active || !InputService.Instance.InputEnabled)
|
if (!_active || !InputService.Instance.InputEnabled)
|
||||||
return;
|
return;
|
||||||
@@ -56,13 +57,14 @@ public partial class Detector : Area2D
|
|||||||
/// Called whenever this node exits an Area2D.
|
/// Called whenever this node exits an Area2D.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="area"></param>
|
/// <param name="area"></param>
|
||||||
public void OnExitedInteractable(Node area)
|
public void OnExitedInteractable(Area2D area)
|
||||||
{
|
{
|
||||||
if (!_active || !InputService.Instance.InputEnabled)
|
if (!_active || !InputService.Instance.InputEnabled)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (area is DetectableInteractionArea interactionArea2D)
|
if (area is DetectableInteractionArea interactionArea2D)
|
||||||
{
|
{
|
||||||
|
|
||||||
EmitSignal(SignalName.InteractableExited);
|
EmitSignal(SignalName.InteractableExited);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
using Babushka.scripts.CSharp.Common.Services;
|
using Babushka.scripts.CSharp.Common.Services;
|
||||||
|
using Babushka.scripts.CSharp.Low_Code.Variables;
|
||||||
using Godot;
|
using Godot;
|
||||||
|
|
||||||
namespace Babushka.scripts.CSharp.Common.CharacterControls;
|
namespace Babushka.scripts.CSharp.Common.CharacterControls;
|
||||||
@@ -28,6 +29,8 @@ public partial class InteractionArea2D : Node2D
|
|||||||
set => _active = value;
|
set => _active = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public bool IsSelectedByDetector { get; set; } = false;
|
||||||
|
|
||||||
public void SetActiveInverse(bool active)
|
public void SetActiveInverse(bool active)
|
||||||
{
|
{
|
||||||
IsActive = !active;
|
IsActive = !active;
|
||||||
@@ -52,6 +55,9 @@ public partial class InteractionArea2D : Node2D
|
|||||||
if (!_useOutline)
|
if (!_useOutline)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
if (!IsSelectedByDetector)
|
||||||
|
return;
|
||||||
|
|
||||||
foreach (var sprite in _spritesToOutline)
|
foreach (var sprite in _spritesToOutline)
|
||||||
{
|
{
|
||||||
sprite.Material = _outlineMaterial;
|
sprite.Material = _outlineMaterial;
|
||||||
@@ -77,6 +83,9 @@ public partial class InteractionArea2D : Node2D
|
|||||||
if (!_active || !InputService.Instance.InputEnabled)
|
if (!_active || !InputService.Instance.InputEnabled)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
if(!IsSelectedByDetector)
|
||||||
|
return;
|
||||||
|
|
||||||
if (@event.IsAction("interact") && @event.IsPressed())
|
if (@event.IsAction("interact") && @event.IsPressed())
|
||||||
{
|
{
|
||||||
TryInteract();
|
TryInteract();
|
||||||
|
|||||||
@@ -0,0 +1,40 @@
|
|||||||
|
using Godot;
|
||||||
|
|
||||||
|
namespace Babushka.scripts.CSharp.Common.CharacterControls;
|
||||||
|
|
||||||
|
public partial class RaycastDetector : RayCast2D
|
||||||
|
{
|
||||||
|
[Export] private bool _active = true;
|
||||||
|
|
||||||
|
private DetectableInteractionArea? _lastDetected;
|
||||||
|
|
||||||
|
public bool IsActive
|
||||||
|
{
|
||||||
|
get => _active;
|
||||||
|
set
|
||||||
|
{
|
||||||
|
Visible = value;
|
||||||
|
_active = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void _PhysicsProcess(double delta)
|
||||||
|
{
|
||||||
|
if (!_active)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (IsColliding())
|
||||||
|
{
|
||||||
|
if (GetCollider() is DetectableInteractionArea interactionArea)
|
||||||
|
{
|
||||||
|
if (_lastDetected != null && _lastDetected != interactionArea)
|
||||||
|
{
|
||||||
|
_lastDetected.NoLongerDetected();
|
||||||
|
}
|
||||||
|
|
||||||
|
_lastDetected = interactionArea;
|
||||||
|
interactionArea.Detected();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
uid://b4n0nlu4ckqga
|
||||||
Reference in New Issue
Block a user