public void Construct(ColorManager colorManager, ISaberModelController modelController, SiraSaberEffectManager siraSaberEffectManager) { // Woohoo! We received the saber model from Zenject! _saberModelController = modelController; _saberModelController.Init(transform, nextType); _siraSaberEffectManager = siraSaberEffectManager; _colorManager = colorManager; // Create all the stuff thats supposed to be on the saber _saberTypeObject = gameObject.AddComponent <SaberTypeObject>(); Utilities.ObjectSaberType(ref _saberTypeObject) = nextType; // Create and populate the saber object _saber = gameObject.AddComponent <Saber>(); Utilities.SaberObjectType(ref _saber) = _saberTypeObject; GameObject top = new GameObject("Top"); GameObject bottom = new GameObject("Bottom"); top.transform.SetParent(transform); bottom.transform.SetParent(transform); top.transform.position = new Vector3(0f, 0f, 1f); Utilities.TopPos(ref _saber) = top.transform; Utilities.BottomPos(ref _saber) = bottom.transform; Utilities.HandlePos(ref _saber) = bottom.transform; _siraSaberEffectManager.SaberCreated(_saber); }
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 static IEnumerator ChangeColorCoroutine(Saber saber, Color color, float time = 0.05f) { if (time != 0) { yield return(new WaitForSeconds(time)); } ISaberModelController modelController = saber.gameObject.GetComponentInChildren <ISaberModelController>(true); if (modelController is BasicSaberModelController bsmc) { Color tintColor = ModelInitData(ref bsmc).trailTintColor; SetSaberGlowColor[] setSaberGlowColors = SaberGlowColor(ref bsmc); SetSaberFakeGlowColor[] setSaberFakeGlowColors = FakeSaberGlowColor(ref bsmc); Light light = SaberLight(ref bsmc); saber.ChangeColor(color, bsmc, tintColor, setSaberGlowColors, setSaberFakeGlowColors, light); } else if (modelController is IColorable colorable) { colorable.SetColor(color); } }
/// <summary> /// Create a saber model provider. /// </summary> /// <param name="priority">The priority of the provider. The highest provider is the model controller that is used.</param> /// <param name="controller">The model controller that is used to setup the saber.</param> public SaberModelProvider(int priority, ISaberModelController controller) { Priority = priority; ModelController = controller; }