private void CreateSelfTargetHitHUDFeedback(ReadyWeaponNode enemyWeapon, RemoteTankNode remoteTank, SelfTankNode selfTank, BattleCameraNode camera, SingleNode <ScreensLayerComponent> canvasNode, bool isShaft) { if (CheckPossibilityForEffectInstancing(enemyWeapon)) { SelfTargetHitEffectHUDData?nullable = this.GetDataForSelfTargetHitEffect(enemyWeapon, selfTank, camera, canvasNode, isShaft); if (nullable != null) { enemyWeapon.weaponSelfTargetHitFeedbackTimer.LastTime = Time.time; SelfTargetHitFeedbackHUDInstanceComponent component = Object.Instantiate <SelfTargetHitFeedbackHUDInstanceComponent>(selfTank.selfTargetHitFeedbackHUDConfig.EffectPrefab, canvasNode.component.transform); Entity entity = base.CreateEntity("SelfTargetHitHUDEffectInstance"); remoteTank.tankGroup.Attach(entity); enemyWeapon.weaponSelfTargetHitFeedbackGroup.Attach(entity); component.Init(entity, nullable.Value); } } }
public void StopDoubleDamageEffect(NodeRemoveEvent e, DamageEffectNode effect, [JoinByTank] ReadyWeaponNode weapon) { weapon.doubleDamageEffect.Stop(); }
public void PlayDoubleDamageEffect(NodeAddedEvent e, DamageEffectNode effect, [Context, JoinByTank] ReadyWeaponNode weapon) { weapon.doubleDamageEffect.Play(); }
private SelfTargetHitEffectHUDData?GetDataForSelfTargetHitEffect(ReadyWeaponNode enemyWeapon, SelfTankNode selfTank, BattleCameraNode camera, SingleNode <ScreensLayerComponent> canvasNode, bool isShaft) => this.GetDataForSelfTargetHitEffect(enemyWeapon.weaponVisualRoot.transform.position, selfTank, camera, canvasNode, isShaft);
public void DetachHUDEffectInstance(NodeRemoveEvent e, ReadyWeaponNode enemyWeapon, [JoinBy(typeof(WeaponSelfTargetHitFeedbackGroupComponent)), Combine] SingleNode <SelfTargetHitFeedbackHUDInstanceComponent> effect) { enemyWeapon.weaponSelfTargetHitFeedbackGroup.Detach(effect.Entity); }
private static bool CheckPossibilityForEffectInstancing(ReadyWeaponNode weapon) => ((Time.time - weapon.weaponSelfTargetHitFeedbackTimer.LastTime) >= 0.5f) ? !weapon.cameraVisibleTrigger.IsVisibleAtRange(50f) : false;