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(); }
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; }
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); } } }