70 lines
No EOL
2.2 KiB
C#
Executable file
70 lines
No EOL
2.2 KiB
C#
Executable file
using System.ComponentModel;
|
|
using UnityEngine;
|
|
|
|
namespace ABI.CCK.Components
|
|
{
|
|
[ExecuteInEditMode]
|
|
[AddComponentMenu("Scripts/CVR Distance Constraint")]
|
|
public class CVRDistanceConstrain : MonoBehaviour
|
|
{
|
|
public Transform target;
|
|
public float minDistance = 0;
|
|
public float maxDistance = 0;
|
|
|
|
[ReadOnly]
|
|
[SerializeField]
|
|
private float currentDistance = 0f;
|
|
|
|
public void OnDrawGizmosSelected()
|
|
{
|
|
if (target == null) return;
|
|
|
|
if (maxDistance < minDistance && maxDistance != 0f) return;
|
|
|
|
Vector3 direction = (transform.position - target.position).normalized;
|
|
|
|
if (minDistance == 0)
|
|
{
|
|
if (maxDistance == 0)
|
|
{
|
|
Gizmos.color = Color.green;
|
|
Gizmos.DrawRay(target.position, direction * 9999f);
|
|
}
|
|
else
|
|
{
|
|
Gizmos.color = Color.green;
|
|
Gizmos.DrawLine(target.position, target.position + direction * maxDistance);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (maxDistance == 0)
|
|
{
|
|
Gizmos.color = Color.red;
|
|
Gizmos.DrawLine(target.position, target.position + direction * minDistance);
|
|
Gizmos.color = Color.green;
|
|
Gizmos.DrawRay(target.position + direction * minDistance, direction * 9999f);
|
|
}
|
|
else
|
|
{
|
|
Gizmos.color = Color.red;
|
|
Gizmos.DrawLine(target.position, target.position + direction * minDistance);
|
|
Gizmos.color = Color.green;
|
|
Gizmos.DrawLine(target.position + direction * minDistance, target.position + direction * maxDistance);
|
|
}
|
|
}
|
|
}
|
|
|
|
public void Update()
|
|
{
|
|
if (target == null)
|
|
{
|
|
currentDistance = 0f;
|
|
}
|
|
else
|
|
{
|
|
currentDistance = Vector3.Distance(transform.position, target.position);
|
|
}
|
|
}
|
|
}
|
|
} |