private static CustomPlatformsLoader Load()
    {
        CustomPlatformsLoader cpl = new CustomPlatformsLoader();

        //PlatformsOnly
        foreach (string platformName in cpl.GetAllEnvironmentIds())
        {
            GameObject platform = cpl.LoadPlatform(platformName);

            CustomPlatform cp = cpl.FindCustomPlatformScript(platform);

            if (cp != null)
            {
                if (!cp.hideHighway && !cp.hideTowers && cp.hideDefaultPlatform && !cp.hideEQVisualizer && !cp.hideSmallRings && !cp.hideBigRings && !cp.hideBackColumns && !cp.hideBackLasers && !cp.hideDoubleLasers && !cp.hideDoubleColorLasers && !cp.hideRotatingLasers && !cp.hideTrackLights)
                {
                    cpl.platformsOnly.Add(platformName);
                }
                else
                {
                    cpl.environmentsOnly.Add(platformName);
                }
            }


            DestroyImmediate(platform, true);
        }


        return(cpl);
    }
        private void SetPlatformForTabIndex(int tabIndex, CustomPlatform platform)
        {
            switch (tabIndex)
            {
            case 0:
                _platformManager.SingleplayerPlatform = platform;
                _config.SingleplayerPlatformHash      = platform.platHash;
                break;

            case 1:
                _platformManager.MultiplayerPlatform = platform;
                _config.MultiplayerPlatformHash      = platform.platHash;
                break;

            case 2:
                _platformManager.A360Platform = platform;
                _config.A360PlatformHash      = platform.platHash;
                break;

            case 3:
                _platformManager.MenuPlatform = platform;
                _config.MenuPlatformHash      = platform.platHash;
                break;
            }
        }
 /// <summary>
 /// Adds a cell to the UI for the given <see cref="CustomPlatform"/>
 /// </summary>
 /// <param name="platform">The platform to be added as a cell</param>
 /// <param name="index">The index the cell should be inserted at</param>
 private void AddCellForPlatform(CustomPlatform platform, int index)
 {
     CustomListTableData.CustomCellInfo cell = new(platform.platName, platform.platAuthor, platform.icon ? platform.icon : _assetLoader.FallbackCover);
     foreach (CustomListTableData listTable in _listTables)
     {
         listTable.data.Insert(index, cell);
     }
 }
 /// <summary>
 /// Changing to the current platform when the menu is shown<br/>
 /// [Called by Beat Saber]
 /// </summary>
 // ReSharper disable once AsyncVoidMethod
 protected override async void DidActivate(bool firstActivation, bool addedToHierarchy, bool screenSystemEnabling)
 {
     base.DidActivate(firstActivation, addedToHierarchy, screenSystemEnabling);
     if (firstActivation)
     {
         _platformManager.AllPlatforms.CollectionChanged += OnCollectionDidChange;
     }
     CustomPlatform platform = GetPlatformForTabIndex(_tabIndex);
     await _platformSpawner.ChangeToPlatformAsync(platform);
 }
Esempio n. 5
0
 /// <summary>
 /// Removes the cell from the UI for the given <see cref="CustomPlatform"/>
 /// </summary>
 /// <param name="platform">The platform the cell was created for</param>
 /// <param name="index">The index the cell is located at</param>
 private void RemoveCellForPlatform(CustomPlatform platform, int index)
 {
     foreach (CustomListTableData listTable in _listTables)
     {
         listTable.data.RemoveAt(index);
         if (platform == GetPlatformForTabIndex(_tabIndex))
         {
             listTable.tableView.SelectCellWithIdx(0);
             listTable.tableView.ScrollToCellWithIdx(0, TableView.ScrollPositionType.Beginning, false);
         }
     }
 }
    public GameObject LoadPlatform(string customEnvironmentString, GameObject defaultEnvironment = null, string customPlatformString = null)
    {
        try
        {
            GameObject defaultEnvironmentInstance = null;
            if (defaultEnvironment != null)
            {
                defaultEnvironmentInstance = Instantiate(defaultEnvironment, LoadInitialMap.PlatformOffset, Quaternion.identity);
                platformDescriptor         = defaultEnvironmentInstance.GetComponentInParent <PlatformDescriptor>();
            }
            GameObject[]   customEnvironments = customPlatformSettings.LoadPlatform(customEnvironmentString);
            GameObject     customEnvironment  = null;
            CustomPlatform environmentCP      = null;
            foreach (GameObject g in customEnvironments)
            {
                environmentCP = FindCustomPlatformScript(g);
                if (environmentCP != null)
                {
                    customEnvironment = g;
                    RemoveHiddenElementsFromEnvironment(defaultEnvironmentInstance, environmentCP);
                    break;
                }
            }

            GameObject[] customPlatforms = null;
            GameObject   customPlatform  = null;
            if (customPlatformString != null)
            {
                customPlatforms = customPlatformSettings.LoadPlatform(customPlatformString);

                CustomPlatform platformCP = null;
                foreach (GameObject g in customPlatforms)
                {
                    platformCP = FindCustomPlatformScript(g);
                    if (platformCP != null)
                    {
                        customPlatform = g;
                        RemoveHiddenElementsFromEnvironment(defaultEnvironmentInstance, platformCP);
                        break;
                    }
                }

                GameObject customPlatformInstance = Instantiate(customPlatform, LoadInitialMap.PlatformOffset, Quaternion.identity);
                DisableElementsFromEnvironmentRecursive(customPlatformInstance, "Camera");
                customPlatformInstance.transform.SetParent(defaultEnvironmentInstance.transform);
                foreach (GameObject g in customPlatforms)
                {
                    if (g != customPlatform)
                    {
                        GameObject customPlatformInstance2 = Instantiate(g, LoadInitialMap.PlatformOffset, Quaternion.identity);
                        customPlatformInstance2.transform.SetParent(customPlatformInstance.transform);
                    }
                }
            }

            if (defaultEnvironment != null)
            {
                GameObject customEnvironmentInstance = Instantiate(customEnvironment, LoadInitialMap.PlatformOffset, Quaternion.identity);
                DisableElementsFromEnvironmentRecursive(customEnvironmentInstance, "Camera");
                customEnvironmentInstance.transform.SetParent(defaultEnvironmentInstance.transform);
                foreach (GameObject g in customEnvironments)
                {
                    if (g != customEnvironment)
                    {
                        GameObject customEnvironmentInstance2 = Instantiate(g, LoadInitialMap.PlatformOffset, Quaternion.identity);
                        customEnvironmentInstance2.transform.SetParent(customEnvironmentInstance.transform);
                    }
                }

                ReplaceBetterBlack(defaultEnvironmentInstance);
                foreach (Renderer renderer in defaultEnvironmentInstance.GetComponentsInChildren <Renderer>())
                {
                    SetShadersCorrectly(renderer);
                }

                //Set LightsManager Size correctly
                SetLightsManagerSize(defaultEnvironmentInstance);

                //Rings
                int          ringCount  = 0;
                TrackRings[] trackRings = defaultEnvironmentInstance.GetComponentsInChildren <TrackRings>();
                foreach (TrackRings trackRing in trackRings)
                {
                    SetRings(trackRing.gameObject, trackRing, ringCount);
                    ringCount++;
                }

                //TubeLights

                SetLightingEventsForTubeLights(defaultEnvironmentInstance);

                return(defaultEnvironmentInstance);
            }


            return(customEnvironment);
        }
        catch
        {
            return(Instantiate(defaultEnvironment, LoadInitialMap.PlatformOffset, Quaternion.identity));
        }
    }
 private void RemoveHiddenElementsFromEnvironment(GameObject environment, CustomPlatform customPlatform)
 {
     if (customPlatform.hideHighway)
     {
         RemoveHiddenElementsFromEnvironmentRecursive(environment, "Floor", new List <string> {
             "PlayersPlace"
         });
         RemoveHiddenElementsFromEnvironmentRecursive(environment, "Legs");
         RemoveHiddenElementsFromEnvironmentRecursive(environment, "Top");
         RemoveHiddenElementsFromEnvironmentRecursive(environment, "Platform");
         RemoveHiddenElementsFromEnvironmentRecursive(environment, "Mirror");
     }
     if (customPlatform.hideTowers)
     {
         RemoveHiddenElementsFromEnvironmentRecursive(environment, "RocketCar");
         RemoveHiddenElementsFromEnvironmentRecursive(environment, "RocketCar (1)");
         RemoveHiddenElementsFromEnvironmentRecursive(environment, "Pillars Object");
         RemoveHiddenElementsFromEnvironmentRecursive(environment, "BG");
         RemoveHiddenElementsFromEnvironmentRecursive(environment, "RocketArena");
     }
     if (customPlatform.hideDefaultPlatform)
     {
         RemoveHiddenElementsFromEnvironmentRecursive(environment, "PlayersPlace");
     }
     if (customPlatform.hideEQVisualizer)
     {
     }
     if (customPlatform.hideSmallRings)
     {
         RemoveHiddenElementsFromEnvironmentRecursive(environment, "Small Rings");
     }
     if (customPlatform.hideBigRings)
     {
         RemoveHiddenElementsFromEnvironmentRecursive(environment, "Big Ring Lights");
         RemoveHiddenElementsFromEnvironmentRecursive(environment, "Big Rings");
         RemoveHiddenElementsFromEnvironmentRecursive(environment, "Platform Rings");
         RemoveHiddenElementsFromEnvironmentRecursive(environment, "Big Ring Neons");
     }
     if (customPlatform.hideBackColumns)
     {
     }
     if (customPlatform.hideBackLasers)
     {
         RemoveHiddenElementsFromEnvironmentRecursive(environment, "Back Lights");
         RemoveHiddenElementsFromEnvironmentRecursive(environment, "Back Lasers");
     }
     if (customPlatform.hideDoubleLasers)
     {
     }
     if (customPlatform.hideDoubleColorLasers)
     {
     }
     if (customPlatform.hideRotatingLasers)
     {
         RemoveHiddenElementsFromEnvironmentRecursive(environment, "Left Rotating Lasers");
         RemoveHiddenElementsFromEnvironmentRecursive(environment, "Right Rotating Lasers");
         RemoveHiddenElementsFromEnvironmentRecursive(environment, "Left Rotating Lights");
         RemoveHiddenElementsFromEnvironmentRecursive(environment, "Right Rotating Lights");
     }
     if (customPlatform.hideTrackLights)
     {
         RemoveHiddenElementsFromEnvironmentRecursive(environment, "Center Lights");
         RemoveHiddenElementsFromEnvironmentRecursive(environment, "Road Lights");
     }
 }
Esempio n. 8
0
        private int GetPlatformIndexForTabIndex(int tabIndex)
        {
            CustomPlatform platform = GetPlatformForTabIndex(tabIndex);

            return(_platformManager.AllPlatforms.IndexOf(platform));
        }