private bool IsCatenaryProp(PropInfo prefab, CatenaryType type)
        {
            switch (type)
            {
            case CatenaryType.TrainDouble:
                return(CatenaryUtils.IsDoubleRailNormalCatenaryProp(prefab));

            case CatenaryType.TrainSingle:
                return(CatenaryUtils.IsSingleRailNormalCatenaryProp(prefab));

            case CatenaryType.TramPoleSide:
                return(CatenaryUtils.IsTramPoleSideProp(prefab));

            case CatenaryType.TramPoleCenter:
                return(CatenaryUtils.IsTramPoleCenterProp(prefab));

            default:
                return(false);
            }
        }
        private List <PropInfo> GetAvailableCatenaries(CatenaryType type)
        {
            var catenaries = new List <PropInfo>();

            var prefabCount = PrefabCollection <PropInfo> .LoadedCount();

            for (uint prefabIndex = 0; prefabIndex < prefabCount; prefabIndex++)
            {
                var prefab = PrefabCollection <PropInfo> .GetLoaded(prefabIndex);

                if (IsCatenaryProp(prefab, type) && CatenaryUtils.IsCatenaryPropVisibeInUI(prefab))
                {
                    catenaries.Add(prefab);
                }
            }

            catenaries.Sort((a, b) => string.Compare(a.GetUncheckedLocalizedTitle(), b.GetUncheckedLocalizedTitle(), StringComparison.Ordinal));

            return(catenaries);
        }