diff options
| author | chai <215380520@qq.com> | 2024-05-19 16:05:58 +0800 |
|---|---|---|
| committer | chai <215380520@qq.com> | 2024-05-19 16:05:58 +0800 |
| commit | 8e13e7e2874adc8982e16d1d2ed2e28d7480b45f (patch) | |
| tree | 63ef85c460288891f5a593d69afeca16cba050b3 /Thronefall_1_57/Decompile/Ara/TireTrack.cs | |
| parent | c5f145786f4c6d2fe4bea831dfc16e52228920a5 (diff) | |
+1.57
Diffstat (limited to 'Thronefall_1_57/Decompile/Ara/TireTrack.cs')
| -rw-r--r-- | Thronefall_1_57/Decompile/Ara/TireTrack.cs | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/Thronefall_1_57/Decompile/Ara/TireTrack.cs b/Thronefall_1_57/Decompile/Ara/TireTrack.cs new file mode 100644 index 0000000..845bee2 --- /dev/null +++ b/Thronefall_1_57/Decompile/Ara/TireTrack.cs @@ -0,0 +1,50 @@ +using UnityEngine; + +namespace Ara; + +[RequireComponent(typeof(AraTrail))] +public class TireTrack : MonoBehaviour +{ + private AraTrail trail; + + public float offset = 0.05f; + + public float maxDist = 0.1f; + + private void OnEnable() + { + trail = GetComponent<AraTrail>(); + trail.onUpdatePoints += ProjectToGround; + } + + private void OnDisable() + { + trail.onUpdatePoints -= ProjectToGround; + } + + private void ProjectToGround() + { + if (Physics.Raycast(new Ray(base.transform.position, -Vector3.up), out var hitInfo, maxDist)) + { + if (trail.emit && trail.points.Count > 0) + { + AraTrail.Point value = trail.points[trail.points.Count - 1]; + if (!value.discontinuous) + { + value.normal = hitInfo.normal; + value.position = hitInfo.point + hitInfo.normal * offset; + trail.points[trail.points.Count - 1] = value; + } + } + trail.emit = true; + } + else if (trail.emit) + { + trail.emit = false; + if (trail.points.Count > 0) + { + trail.points.RemoveAt(trail.points.Count - 1); + } + } + } +} |
