public void OnCastTimeChanged(IAbilityCaster abilityCaster, IAbility ability, float currentPercent) { //Debug.Log(gameObject.name + ".CastBarController.OnCastTimeChanged(" + currentTime + ") : total casting time: " + ability.MyAbilityCastingTime); if (currentPercent <= 1f) { // first set text because bar width is based on text size castText.text = ability.DisplayName + " ( " + (currentPercent * ability.GetAbilityCastingTime(abilityCaster)).ToString("F1") + "s / " + ability.GetAbilityCastingTime(abilityCaster).ToString("F1") + "s )"; // then get width of container that expands to the text originalCastSliderWidth = castBackground.GetComponent <RectTransform>().rect.width; //Debug.Log(gameObject.name + ".CastBarController.OnCastTimeChanged(): cast slider width: " + originalCastSliderWidth); this.gameObject.SetActive(true); //float castPercent = (float)currentPercent / ability.GetAbilityCastingTime(abilityCaster); // code for an actual image, not currently used //playerCastSlider.fillAmount = castPercent; // code for the default image castSlider.GetComponent <LayoutElement>().preferredWidth = currentPercent * originalCastSliderWidth; if (castIcon.sprite != ability.MyIcon) { castIcon.sprite = null; castIcon.sprite = ability.MyIcon; } } }