@@ -96,6 +96,7 @@ public TrainCar LastCar
9696 }
9797 public Traveller RearTDBTraveller; // positioned at the back of the last car in the train
9898 public Traveller FrontTDBTraveller; // positioned at the front of the train by CalculatePositionOfCars
99+ Traveller CalculatorTraveller; // CalculatePositionOfCars uses it for the calculations
99100 public float Length; // length of train from FrontTDBTraveller to RearTDBTraveller
100101 public float MassKg; // weight of the train
101102 public float SpeedMpS; // meters per second +ve forward, -ve when backing
@@ -420,6 +421,8 @@ public enum END_AUTHORITY
420421
421422 public bool nextRouteReady = false; // indication to activity.cs that a reversal has taken place
422423
424+ readonly List<int[]> sectionList = new List<int[]>(); // internally used in UpdateSectionState()
425+
423426 // Deadlock Info :
424427 // list of sections where deadlock begins
425428 // per section : list with trainno and end section
@@ -4378,7 +4381,9 @@ public void CalculatePositionOfCars(float elapsedTime, float distance)
43784381
43794382 // TODO : check if train moved back into previous section
43804383
4381- var traveller = new Traveller(RearTDBTraveller);
4384+ CalculatorTraveller = CalculatorTraveller ?? new Traveller(RearTDBTraveller);
4385+ var traveller = CalculatorTraveller;
4386+ traveller.Copy(RearTDBTraveller);
43824387 // The traveller location represents the back of the train.
43834388 var length = 0f;
43844389
@@ -4453,7 +4458,7 @@ public void CalculatePositionOfCars(float elapsedTime, float distance)
44534458 car.UpdateFreightAnimationDiscretePositions();
44544459 }
44554460
4456- FrontTDBTraveller = traveller ;
4461+ ( FrontTDBTraveller, CalculatorTraveller) = (CalculatorTraveller, FrontTDBTraveller) ;
44574462 Length = length;
44584463 travelled += distance;
44594464 } // CalculatePositionOfCars
@@ -6521,7 +6526,7 @@ public void ObtainRequiredActions(int backward)
65216526 public void UpdateSectionState(int backward)
65226527 {
65236528
6524- List<int[]> sectionList = new List<int[]> ();
6529+ sectionList.Clear ();
65256530
65266531 int lastIndex = PreviousPosition[0].RouteListIndex;
65276532 int presentIndex = PresentPosition[0].RouteListIndex;
@@ -20025,6 +20030,7 @@ public RoughReversalInfo(int subPathIndex, float reverseReversalOffset, int reve
2002520030
2002620031 public class DistanceTravelledActions : LinkedList<DistanceTravelledItem>
2002720032 {
20033+ readonly List<DistanceTravelledItem> itemList = new List<DistanceTravelledItem>();
2002820034
2002920035 //================================================================================================//
2003020036 //
@@ -20111,7 +20117,7 @@ public void InsertClearSection(float distance, int sectionIndex)
2011120117
2011220118 public List<DistanceTravelledItem> GetActions(float distance)
2011320119 {
20114- List<DistanceTravelledItem> itemList = new List<DistanceTravelledItem> ();
20120+ itemList.Clear ();
2011520121
2011620122 bool itemsCollected = false;
2011720123 LinkedListNode<DistanceTravelledItem> nextNode = this.First;
@@ -20136,7 +20142,7 @@ public List<DistanceTravelledItem> GetActions(float distance)
2013620142
2013720143 public List<DistanceTravelledItem> GetAuxActions(Train thisTrain, float distance)
2013820144 {
20139- List<DistanceTravelledItem> itemList = new List<DistanceTravelledItem> ();
20145+ itemList.Clear ();
2014020146 LinkedListNode<DistanceTravelledItem> nextNode = this.First;
2014120147
2014220148 while (nextNode != null)
@@ -20159,7 +20165,7 @@ public List<DistanceTravelledItem> GetAuxActions(Train thisTrain, float distance
2015920165
2016020166 public List<DistanceTravelledItem> GetActions(float distance, Type reqType)
2016120167 {
20162- List<DistanceTravelledItem> itemList = new List<DistanceTravelledItem> ();
20168+ itemList.Clear ();
2016320169
2016420170 bool itemsCollected = false;
2016520171 LinkedListNode<DistanceTravelledItem> nextNode = this.First;
0 commit comments