Beispiel #1
0
            public void UpdatePosition(Bogie bogie)
            {
                RailTrack trackCurrent = bogie.track;
                double    spanCurrent  = bogie.traveller.Span;

                if (track == null)
                {
                    track = trackCurrent;
                    span  = spanCurrent;
                }
                else if (trackCurrent != track)
                {
                    trackNext    = trackCurrent.GetNextFromPrev(track);
                    trackPrev    = track;
                    track        = trackCurrent;
                    span         = spanCurrent;
                    changedTrack = true;
                }
                else
                {
                    changedTrack = false;

                    moving = dvCar.GetVelocity().sqrMagnitude > 0.02f;

                    if (moving)
                    {
                        double diff = spanCurrent - span;
                        if (diff < -Mathf.Epsilon)
                        {
                            trackNext = trackCurrent.GetInTrack();
                        }
                        else if (diff > Mathf.Epsilon)
                        {
                            trackNext = trackCurrent.GetOutTrack();
                        }

                        span = spanCurrent;
                    }
                }
            }