Esempio n. 1
0
 // 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;
 }
Esempio n. 2
0
        // 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;
        }