Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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));
            }
        }
Ejemplo n.º 6
0
        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);
                }
            }
        }
Ejemplo n.º 7
0
        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);
                }
            }
        }