40 lines
1 KiB
C#
40 lines
1 KiB
C#
using Godot;
|
|
using PokemonLike.Library.Support;
|
|
|
|
namespace PokemonLike.Library.Characters;
|
|
|
|
[GlobalClass]
|
|
public partial class CharacterCollisionRayCast : RayCast2D
|
|
{
|
|
[Signal] public delegate void CollisionEventHandler(bool collided);
|
|
|
|
[ExportCategory("Collision Vars")] [Export]
|
|
public CharacterInput CharacterInput;
|
|
[Export] public GodotObject Collider;
|
|
|
|
public override void _Ready()
|
|
{
|
|
Logger.Info("Loading character collision raycast ...");
|
|
}
|
|
|
|
public override void _Process(double delta)
|
|
{
|
|
if (TargetPosition != CharacterInput.TargetPosition)
|
|
TargetPosition = CharacterInput.TargetPosition;
|
|
|
|
if (IsColliding())
|
|
{
|
|
Collider = GetCollider();
|
|
string colliderType = Collider.GetType().Name;
|
|
switch (colliderType)
|
|
{
|
|
|
|
default:
|
|
EmitSignal(SignalName.Collision, true);
|
|
break;
|
|
}
|
|
}
|
|
else
|
|
EmitSignal(SignalName.Collision, false);
|
|
}
|
|
}
|