private static GameObject LoadTrailWithPool(TrailRendererEventProperties properties, bool isCrit = false) { GameObject trail = null; if (GenericPoolSingleton.Instance.trailPool != null) { string name = string.Empty; if (isCrit) { if (properties._trailRendererCrit != null) { name = properties._trailRendererCrit.name; } else { name = properties.TrailRendererNameCrit; } } else { if (properties._trailRenderer != null) { name = properties._trailRenderer.name; } else { name = properties.TrailRendererName; } } trail = GenericPoolSingleton.Instance.trailPool.Use(name); } return(trail); }
public void OnPlayTrailRenderer(MoveAnimationEvent e) { TrailRendererEventInfo evt = e.EventRef as TrailRendererEventInfo; TrailRendererEventProperties properties = evt._trailRendererProperties; PlayTrailRenderer(properties); }
private static GameObject LoadTrailWithoutPool(TrailRendererEventProperties properties, bool isCrit = false) { GameObject trail = null; if (isCrit) { trail = (GameObject)GameObject.Instantiate(properties._trailRendererCrit); } else { trail = (GameObject)GameObject.Instantiate(properties._trailRenderer); } return(trail); }
public void Init(TrailRendererEventProperties properties, Animator animator, float startTime, bool flipped, bool isCrit) { //_properties = properties; _startTime = startTime; _animClip = properties._rigAnimClip; _trailRenderer = MoveUtils.InstantiateTrailInstance(properties, animator, flipped, isCrit, true).GetComponent <TrailRendererInstance>(); _animRoot = EB.Util.GetObjectExactMatch(_trailRenderer.gameObject, "anim_root"); _played = false; if (properties._parent) { _attachTransform = _trailRenderer.GetComponent <AttachTransform>(); } }
public void PlayTrailRenderer(TrailRendererEventProperties properties) { bool isCrit = false; Hotfix_LT.Combat.Combatant combatant = gameObject.GetComponent <Hotfix_LT.Combat.Combatant>(); if (combatant != null) { isCrit = combatant.IsCurrentAttackCritical(); } GameObject trail = MoveUtils.InstantiateTrailInstance(properties, GetComponent <Animator>(), _flipped, isCrit); if (trail != null) { RegisterTrail(trail, properties._eventName, properties._isInterruptible); trail.GetComponent <TrailRendererInstance>().Play(Time.time); if (!string.IsNullOrEmpty(properties.RigAnimClipName)) { Animation animRoot = trail.transform.Find("anim_root").GetComponent <Animation>(); animRoot.Play(properties.RigAnimClipName); } } }
public static GameObject InstantiateTrailInstance(TrailRendererEventProperties properties, Animator animator, bool flipped, bool isCrit, bool bypassPools = false) { GameObject trail = null; if (Application.isPlaying) { if (!bypassPools) { trail = LoadTrailWithPool(properties, isCrit); } else { trail = LoadTrailWithoutPool(properties, isCrit); } } else { trail = LoadTrailWithoutPool(properties, isCrit); } if (trail != null) { TrailRendererInstance tri = trail.GetComponent <TrailRendererInstance>(); Transform parent = null; if (tri != null) { Vector3 offset1 = properties._offset1; Vector3 offset2 = properties._offset2; tri.OffsetPoints(offset1, offset2, properties._useLocalOffsets); if (tri._TimeUnits == TrailRenderer.eTIME_UNITS.Frames) { tri.ConvertFramesToSeconds(properties._fps); } } if (animator != null) { parent = GetBodyPartTransform(animator, properties._attachment, properties._attachmentPath); trail.transform.parent = parent; trail.transform.localPosition = properties._rigOffset; if (properties._worldSpace) { trail.transform.eulerAngles = properties._angles; if (flipped) { // rotate this by 180 trail.transform.RotateAround(trail.transform.position, Vector3.up, 180.0f); } } else { trail.transform.localEulerAngles = properties._angles; } } trail.transform.localScale = Vector3.one; if (!properties._parent) { trail.transform.parent = null; } else { AttachTransform at = AttachTransform.LockPosition(trail, properties._lockXOffset, properties._lockYOffset, properties._lockZOffset); tri.SetAttachTransform(at); } } return(trail); }