// Token: 0x06002664 RID: 9828 RVA: 0x000E1820 File Offset: 0x000DFC20 public void getTrackData(float trackPosition, out Vector3 position, out Vector3 normal, out Vector3 direction) { if (this.trackSamples.Count > 1) { TrackSample trackSample = this.trackSamples[0]; for (int i = 1; i < this.trackSamples.Count; i++) { TrackSample trackSample2 = this.trackSamples[i]; if (trackPosition >= trackSample.distance && trackPosition <= trackSample2.distance) { float t = (trackPosition - trackSample.distance) / (trackSample2.distance - trackSample.distance); position = Vector3.Lerp(trackSample.position, trackSample2.position, t); normal = Vector3.Lerp(trackSample.normal, trackSample2.normal, t); direction = Vector3.Lerp(trackSample.direction, trackSample2.direction, t); return; } trackSample = trackSample2; } if (this.isLoop) { TrackSample trackSample3 = this.trackSamples[0]; if (trackSample != trackSample3) { float t2 = (trackPosition - trackSample.distance) / (this.trackSampledLength - trackSample.distance); position = Vector3.Lerp(trackSample.position, trackSample3.position, t2); normal = Vector3.Lerp(trackSample.normal, trackSample3.normal, t2); direction = Vector3.Lerp(trackSample.direction, trackSample3.direction, t2); return; } } } position = Vector3.zero; normal = Vector3.up; direction = Vector3.forward; }
// Token: 0x06002679 RID: 9849 RVA: 0x000E3B08 File Offset: 0x000E1F08 private void updateTrackSamples() { this.trackSamples.Clear(); if (this.samples.Count < 2) { return; } Vector3 vector = Vector3.zero; Vector3 up = Vector3.up; double num = 0.0; int num2 = (!this.isLoop) ? this.samples.Count : (this.samples.Count - 1); for (int i = 1; i < num2; i++) { RoadSample roadSample = this.samples[i]; TrackSample trackSample = null; if (i == 1) { RoadSample roadSample2 = this.samples[0]; this.getTrackPosition(roadSample2.index, roadSample2.time, out vector, out up); trackSample = new TrackSample(); trackSample.position = vector; trackSample.normal = up; this.trackSamples.Add(trackSample); } Vector3 vector2; Vector3 normal; this.getTrackPosition(roadSample.index, roadSample.time, out vector2, out normal); Vector3 a = vector2 - vector; float magnitude = a.magnitude; Vector3 direction = a / magnitude; TrackSample trackSample2 = new TrackSample(); trackSample2.distance = (float)num; trackSample2.position = vector2; trackSample2.normal = normal; trackSample2.direction = direction; this.trackSamples.Add(trackSample2); if (trackSample != null) { trackSample.direction = direction; } vector = vector2; num += (double)magnitude; } if (this.isLoop) { num += (double)(this.trackSamples[0].position - vector).magnitude; } this.trackSampledLength = (float)num; }