private static IList <CustomSaberData> LoadCustomSabers(IEnumerable <string> customSaberFiles) { IList <CustomSaberData> customSabers = new List <CustomSaberData> { new CustomSaberData("DefaultSabers"), }; foreach (string customSaberFile in customSaberFiles) { try { CustomSaberData newSaber = new CustomSaberData(customSaberFile); if (newSaber != null) { customSabers.Add(newSaber); } } catch (Exception ex) { Logger.log.Warn($"Failed to Load Custom Saber with name '{customSaberFile}'."); Logger.log.Warn(ex); } } return(customSabers); }
private void Awake() { if (sabers) { Destroy(sabers); sabers = null; } colorManager = Resources.FindObjectsOfTypeAll <ColorManager>().LastOrDefault(); ResetVanillaTrails(); CustomSaberData customSaber = (Configuration.RandomSabersEnabled) ? SaberAssetLoader.GetRandomSaber() : SaberAssetLoader.CustomSabers[SaberAssetLoader.SelectedSaber]; if (customSaber != null) { if (customSaber.FileName == "DefaultSabers") { StartCoroutine(WaitToCheckDefault()); } else { Logger.log.Debug("Replacing sabers"); if (customSaber.Sabers) { sabers = Instantiate(customSaber.Sabers); rightSaber = sabers?.transform.Find("RightSaber").gameObject; leftSaber = sabers?.transform.Find("LeftSaber").gameObject; } StartCoroutine(WaitForSabers(customSaber.Sabers)); } } }
public void GenerateSaberPreview(int selectedSaber) { if (!isGeneratingPreview) { try { isGeneratingPreview = true; ClearSabers(); CustomSaberData customSaber = SaberAssetLoader.CustomSabers[selectedSaber]; if (customSaber != null) { sabers = CreatePreviewSaber(customSaber.Sabers, preview.transform, sabersPos); PositionPreviewSaber(saberLeftPos, sabers?.transform.Find("LeftSaber").gameObject); PositionPreviewSaber(saberRightPos, sabers?.transform.Find("RightSaber").gameObject); } } catch (Exception ex) { Logger.log.Error(ex); } finally { isGeneratingPreview = false; } } }
public void OnSaberWasChanged(CustomSaberData customSaber) { if (!string.IsNullOrWhiteSpace(customSaber?.ErrorMessage)) { errorDescription.gameObject.SetActive(true); errorDescription.SetText($"{customSaber.Descriptor?.SaberName}:\n\n{Utils.SafeUnescape(customSaber.ErrorMessage)}"); } else { errorDescription.gameObject.SetActive(false); } }
private void Awake() { if (sabers) { Destroy(sabers); sabers = null; } colorManager = Resources.FindObjectsOfTypeAll <ColorManager>().LastOrDefault(); // Reset Trails IEnumerable <SaberWeaponTrail> trails = Resources.FindObjectsOfTypeAll <SaberWeaponTrail>(); foreach (SaberWeaponTrail trail in trails) { ReflectionUtil.SetPrivateField(trail, "_multiplierSaberColor", new Color(1f, 1f, 1f, 0.251f)); ReflectionUtil.SetPrivateField(trail as XWeaponTrail, "_whiteSteps", 4); } CustomSaberData customSaber = SaberAssetLoader.CustomSabers[SaberAssetLoader.SelectedSaber]; if (customSaber.FileName == "DefaultSabers") { StartCoroutine(WaitToCheckDefault()); } else { Logger.log.Debug("Replacing sabers"); if (customSaber.Sabers) { sabers = Instantiate(customSaber.Sabers); rightSaber = sabers?.transform.Find("RightSaber").gameObject; leftSaber = sabers?.transform.Find("LeftSaber").gameObject; } StartCoroutine(WaitForSabers(customSaber.Sabers)); } }
private IEnumerator PreloadDefaultSabers() { bool isSceneLoaded = false; string sceneName; try { sceneName = "StandardGameplay"; Logger.log.Debug($"Loading {sceneName} scene"); var loadScene = SceneManager.LoadSceneAsync(sceneName, LoadSceneMode.Additive); while (!loadScene.isDone) { yield return(null); } sceneName = "GameCore"; Logger.log.Debug($"Loading {sceneName} scene"); loadScene = SceneManager.LoadSceneAsync(sceneName, LoadSceneMode.Additive); while (!loadScene.isDone) { yield return(null); } isSceneLoaded = true; Logger.log.Debug("Loaded!"); yield return(new WaitForSecondsRealtime(0.1f)); SaberModelController saber = Resources.FindObjectsOfTypeAll <SaberModelController>().FirstOrDefault(); Logger.log.Debug("Got sabers!"); Logger.log.Debug($"Saber: {saber.name}, GameObj: {saber.gameObject.name}, {saber.ToString()}"); // Left Saber defaultLeftSaber = Instantiate(saber).gameObject; DestroyImmediate(defaultLeftSaber.GetComponent <SaberModelController>()); DestroyImmediate(defaultLeftSaber.GetComponentInChildren <ConditionalMaterialSwitcher>()); foreach (var c in defaultLeftSaber.GetComponentsInChildren <SetSaberGlowColor>()) { DestroyImmediate(c); } DontDestroyOnLoad(defaultLeftSaber); defaultLeftSaber.transform.SetParent(this.transform); defaultLeftSaber.gameObject.name = "LeftSaber"; defaultLeftSaber.transform.localPosition = Vector3.zero; defaultLeftSaber.transform.localRotation = Quaternion.identity; defaultLeftSaber.AddComponent <DummySaber>(); // Right Saber defaultRightSaber = Instantiate(saber).gameObject; DestroyImmediate(defaultRightSaber.GetComponent <SaberModelController>()); DestroyImmediate(defaultRightSaber.GetComponentInChildren <ConditionalMaterialSwitcher>()); foreach (var c in defaultRightSaber.GetComponentsInChildren <SetSaberGlowColor>()) { DestroyImmediate(c); } DontDestroyOnLoad(defaultRightSaber); defaultRightSaber.transform.SetParent(this.transform); defaultRightSaber.gameObject.name = "RightSaber"; defaultRightSaber.transform.localPosition = Vector3.zero; defaultRightSaber.transform.localRotation = Quaternion.identity; defaultRightSaber.AddComponent <DummySaber>(); Logger.log.Debug("Finished! Got default sabers! Setting active state"); if (defaultLeftSaber) { Logger.log.Debug("Found default left saber"); defaultLeftSaber.SetActive(false); } if (defaultRightSaber) { Logger.log.Debug("Found default right saber"); defaultRightSaber.SetActive(false); } if (defaultLeftSaber && defaultRightSaber) { // Add them as the first Object in the list, replacing the empty version. CustomSaberData defaultSabers = new CustomSaberData(defaultLeftSaber.gameObject, defaultRightSaber.gameObject); SaberAssetLoader.CustomSabers[0] = defaultSabers; isCompleted = true; } } finally { if (isSceneLoaded) { sceneName = "StandardGameplay"; Logger.log.Debug($"Unloading {sceneName}"); SceneManager.UnloadSceneAsync(sceneName); sceneName = "GameCore"; Logger.log.Debug($"Unloading {sceneName}"); SceneManager.UnloadSceneAsync(sceneName); } } }
private IEnumerator PreloadDefaultSabers() { bool isSceneLoaded = false; string sceneName = "GameCore"; try { Saber defaultLeftSaber = null; Saber defaultRightSaber = null; Logger.log.Debug($"Loading {sceneName} scene"); SceneManager.LoadSceneAsync(sceneName, LoadSceneMode.Additive); isSceneLoaded = true; Logger.log.Debug("Loaded!"); yield return(new WaitUntil(() => Resources.FindObjectsOfTypeAll <Saber>().Count() > 1)); Logger.log.Debug("Got sabers!"); IEnumerable <Saber> sabers = Resources.FindObjectsOfTypeAll <Saber>(); foreach (Saber saber in sabers) { Logger.log.Debug($"Saber: {saber.name}, GameObj: {saber.gameObject.name}, {saber.ToString()}"); if (saber.name == "LeftSaber") { defaultLeftSaber = Instantiate(saber); } else if (saber.name == "RightSaber") { defaultRightSaber = Instantiate(saber); } } Logger.log.Debug("Finished! Got default sabers! Setting active state"); if (defaultLeftSaber) { Logger.log.Debug("Found default left saber"); defaultLeftSaber.gameObject.SetActive(false); //defaultLeftSaber.name = "___OriginalSaberPreviewB"; //DontDestroyOnLoad(defaultLeftSaber.gameObject); } if (defaultRightSaber) { Logger.log.Debug("Found default right saber"); defaultRightSaber.gameObject.SetActive(false); //defaultRightSaber.name = "___OriginalSaberPreviewA"; //DontDestroyOnLoad(defaultRightSaber.gameObject); } if (defaultLeftSaber && defaultRightSaber) { // Add them as the first Object in the list, replacing the empty version. CustomSaberData defaultSabers = new CustomSaberData(defaultLeftSaber, defaultRightSaber); SaberAssetLoader.CustomSabers[0] = defaultSabers; isCompleted = true; } } finally { if (isSceneLoaded) { Logger.log.Debug($"Unloading {sceneName}"); SceneManager.UnloadSceneAsync(sceneName); } } }