private void FollowOrigin(SpecialEffectData effect) { if (effect.Origin == null) { return; } var pos = effect.Origin.transform.position + effect.Offset; effect.EffectContainer.transform.position = pos; }
private bool IsFinished(SpecialEffectData effect) { if (effect.DiesWithOrigin && effect.Origin == null) { return(true); } if (effect.Duration <= 0) { return(false); } effect.TimeActive += Time.deltaTime; return(effect.TimeActive > effect.Duration); }
private GameObject InstantiateEffect(SpecialEffectData effectData) { var effectPrefab = LoadEffect(effectData.EffectPrefabName); var effectGameObject = Instantiate(effectPrefab); var effectContainer = new GameObject(); effectContainer.transform.parent = transform; effectContainer.transform.position = effectData.Origin.transform.position + effectData.Offset; effectContainer.name = effectData.EffectPrefabName + "Container"; effectData.EffectContainer = effectContainer; effectGameObject.transform.SetParent(effectContainer.transform); effectGameObject.transform.localPosition = Vector3.zero; _runningSpecialEffects.Add(effectData); return(effectGameObject); }