diff options
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); + } + } + } +} |
