summaryrefslogtreecommitdiff
path: root/Assets/Art/Vfx/GrabSquaresEffect/AbstractWiresEffect/Scripts/CollisionDetector.cs
blob: 179d8511d191c806deb1791320c340b55a1dd499 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
using System;
using UnityEngine;

namespace Assets.AbstractWiresEffect.Scripts
{
    internal sealed class CollisionDetector : MonoBehaviour
    {
        public float CollisionDistance;

        private Transform _transform;

        public event Action<Vector3> CollisionDetected;

        private void Start()
        {
            _transform = transform;
        }

        private void FixedUpdate()
        {
            RaycastHit hit;
            if (!Physics.Raycast(_transform.position, -transform.up, out hit, CollisionDistance))
                return;

            var distance = Vector3.Distance(_transform.position, hit.point);

            if (distance > CollisionDistance)
                return;

            if (CollisionDetected != null)
                CollisionDetected.Invoke(hit.point);
        }
    }
}