private void UpdateText(TextMeshPro text, StratusPopUpTransformText data) { Vector3 position = data.transform.position + data.offset; text.transform.position = position; text.transform.forward = position - outputCamera.transform.position; }
//------------------------------------------------------------------------/ // Virtual //------------------------------------------------------------------------/ protected virtual void OnRemoveAction(TextMeshPro instance, StratusPopUpTransformText parameters) { if (parameters.fadeOutDuration > 0.0f) { instance.CrossFadeAlpha(0f, parameters.fadeOutDuration, true); } }
//------------------------------------------------------------------------/ // Procedures //------------------------------------------------------------------------/ private void OnInstantiate(TextMeshPro instance, StratusPopUpTransformText parameters) { //Vector3 screenPosition = Camera.main.WorldToScreenPoint(parameters.transform.position); if (debug) { this.Log($"Instantiating text {parameters}"); } UpdateText(instance, parameters); instance.text = parameters.text ?? string.Empty; instance.alpha = 1f; instance.richText = parameters.richText; instance.color = parameters.color; instance.fontSize = parameters.fontSize > 0 ? parameters.fontSize : StratusPopUpTransformText.defaultFontSize; if (parameters.duration <= 0.0f) { this.LogWarning($"Invalid duration of {parameters.duration} set. Using default of {StratusPopUpTransformText.defaultDuration}"); parameters.duration = StratusPopUpTransformText.defaultDuration; } parameters.instanced = true; // Remove after a set amount of time Action removeAction = () => { OnRemoveAction(instance, parameters); OnTextRemoved(parameters); }; Invoke(removeAction, parameters.duration + parameters.fadeOutDuration); }
private void OnValidate() { if (parameters == null) { parameters = new StratusPopUpTransformText(this.transform, this.name); } }
private void OnTextRemoved(StratusPopUpTransformText obj) { bool removed = textObjectPool.Remove(obj); obj.instanced = !removed; if (!removed) { this.LogError($"Failed to remove {obj}"); } }
public InstantiateEvent(StratusPopUpTransformText popUpText) { this.popUpText = popUpText; }
//------------------------------------------------------------------------/ // Static Methods //------------------------------------------------------------------------/ public static void Instantiate(StratusPopUpTransformText popUpText) { StratusScene.Dispatch <StratusPopUpTransformText.InstantiateEvent>(new StratusPopUpTransformText.InstantiateEvent(popUpText)); }
private void OnTextAdded(StratusPopUpTransformText obj) { textObjectPool.Instantiate(obj); }