private void Update() { projectileTracer.AddPoint(transform.position); if (previousPosition == transform.position) { return; } Vector3 hitPosition; if (terrain.Linecast(previousPosition, transform.position, out hitPosition)) { gameObject.SetActive(false); ProjectileInfluence influence = projectileInfluenceFactory.Create(transform.position, Consts.BOOM_RADIUS); influence.transform.localScale = Vector3.zero; influence.OnPeak .Subscribe(OnInnerInfluencePeak) .AddTo(influence); influence.OnEnd .Subscribe(OnInnerInfluenceEnd) .AddTo(influence); } previousPosition = transform.position; }
private void OnInnerInfluenceEnd(ProjectileInfluence projectileInfluence) { projectileInfluence.OnEnd.Dispose(); Destroy(gameObject); OnInfluenceEnd.Execute(new InfluenceEventArgs(this, projectileInfluence)); }
private void OnInnerInfluencePeak(ProjectileInfluence projectileInfluence) { projectileInfluence.OnPeak.Dispose(); OnInfluencePeak.Execute(new InfluenceEventArgs(this, projectileInfluence)); }