39 lines
896 B
C#
39 lines
896 B
C#
using UnityEngine;
|
|
|
|
namespace RoR2;
|
|
|
|
internal class LaserPointerController : MonoBehaviour
|
|
{
|
|
public InputBankTest source;
|
|
|
|
public GameObject dotObject;
|
|
|
|
public LineRenderer beam;
|
|
|
|
public float minDistanceFromStart = 4f;
|
|
|
|
private void LateUpdate()
|
|
{
|
|
bool flag = false;
|
|
bool active = false;
|
|
if ((bool)source)
|
|
{
|
|
Ray ray = new Ray(source.aimOrigin, source.aimDirection);
|
|
if (Physics.Raycast(ray, out var hitInfo, float.PositiveInfinity, (int)LayerIndex.world.mask | (int)LayerIndex.entityPrecise.mask, QueryTriggerInteraction.UseGlobal))
|
|
{
|
|
base.transform.position = hitInfo.point;
|
|
base.transform.forward = -ray.direction;
|
|
float num = hitInfo.distance - minDistanceFromStart;
|
|
if (num >= 0.1f)
|
|
{
|
|
beam.SetPosition(1, new Vector3(0f, 0f, num));
|
|
flag = true;
|
|
}
|
|
active = true;
|
|
}
|
|
}
|
|
dotObject.SetActive(active);
|
|
beam.enabled = flag;
|
|
}
|
|
}
|