Esempio n. 1
0
            public static void Prefix(ref GameCoreSceneSetup __instance, ref BasicSaberModelController ____basicSaberModelControllerPrefab)
            {
                // Borrow the XWeaponTrail and expose it to Zenject ;)

                var trail     = ____basicSaberModelControllerPrefab.GetField <XWeaponTrail, BasicSaberModelController>("_saberWeaponTrail");
                var container = GetContainer(__instance);

                container.Bind <XWeaponTrail>().FromComponentOn(trail.gameObject).AsTransient();
            }
Esempio n. 2
0
        public static void ChangeColor(this Saber _, Color color, BasicSaberModelController bsmc, Color tintColor, SetSaberGlowColor[] setSaberGlowColors, SetSaberFakeGlowColor[] setSaberFakeGlowColors, Light light)
        {
            SaberTrail(ref bsmc).color = (color * tintColor).linear;

            for (int i = 0; i < setSaberGlowColors.Length; i++)
            {
                setSaberGlowColors[i].OverrideColor(color);
            }
            for (int i = 0; i < setSaberFakeGlowColors.Length; i++)
            {
                setSaberFakeGlowColors[i].OverrideColor(color);
            }
            light.color = color;
        }
Esempio n. 3
0
        public static Color GetColor(this Saber saber)
        {
            ISaberModelController modelController = saber.gameObject.GetComponentInChildren <ISaberModelController>(true);

            if (modelController is BasicSaberModelController)
            {
                BasicSaberModelController bsmc = modelController as BasicSaberModelController;
                Light light = SaberLight(ref bsmc);
                return(light.color);
            }
            else if (modelController is IColorable)
            {
                IColorable colorable = modelController as IColorable;
                return(colorable.Color);
            }
            return(Color.white);
        }
        private IEnumerator PreloadDefaultSabers()
        {
            bool   isSceneLoaded = false;
            string sceneName     = "GameCore";

            try
            {
                Logger.log.Debug($"Loading {sceneName} scene");
                var loadScene = SceneManager.LoadSceneAsync(sceneName, LoadSceneMode.Additive);

                while (!loadScene.isDone)
                {
                    yield return(null);
                }

                isSceneLoaded = true;
                Logger.log.Debug("Loaded!");

                BasicSaberModelController saber = Resources.FindObjectsOfTypeAll <BasicSaberModelController>().FirstOrDefault();
                trail = saber.GetComponent <Xft.XWeaponTrail>();

                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 <BasicSaberModelController>());
                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 <BasicSaberModelController>());
                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)
                {
                    Logger.log.Debug($"Unloading {sceneName}");
                    SceneManager.UnloadSceneAsync(sceneName);
                }
            }
        }