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); }
/// <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"); } }
private int GetPlatformIndexForTabIndex(int tabIndex) { CustomPlatform platform = GetPlatformForTabIndex(tabIndex); return(_platformManager.AllPlatforms.IndexOf(platform)); }