예제 #1
0
 public void CheckIfVulcanHitSelfTank(UpdateEvent e, VulcanStreamHitNode vulcan, [JoinAll] CameraShakerNode cameraShaker, [JoinAll] SingleNode <GameCameraShakerSettingsComponent> settings)
 {
     if (this.ValidateShakeOnVulcanImpact(vulcan, cameraShaker, settings) && !vulcan.Entity.HasComponent <VulcanImpactCameraShakerInstanceComponent>())
     {
         vulcan.Entity.AddComponent(new VulcanImpactCameraShakerInstanceComponent(vulcan.impactCameraShakerConfig.FadeOutTime));
     }
 }
예제 #2
0
 public void ShakeOnDiscreteImpact(ImpactEvent evt, SingleNode <ImpactCameraShakerConfigComponent> weapon, SelfTankNode tank, [JoinAll] CameraShakerNode cameraShaker, [JoinAll] SingleNode <GameCameraShakerSettingsComponent> settings, [JoinAll] SingleNode <MainHUDComponent> hud)
 {
     cameraShaker.cameraShaker.ShakeByDiscreteImpact(settings.component, weapon.component, evt.Force.normalized, evt.WeakeningCoeff);
     hud.component.battleHudRoot.ShakeHUDOnImpact(settings.component, weapon.component);
 }
예제 #3
0
        private bool ValidateShakeOnVulcanImpact(VulcanStreamHitNode vulcan, CameraShakerNode cameraShaker, SingleNode <GameCameraShakerSettingsComponent> settings)
        {
            StreamHitComponent streamHit = vulcan.streamHit;

            return(settings.component.Enabled ? ((streamHit.TankHit != null) ? streamHit.TankHit.Entity.HasComponent <SelfTankComponent>() : false) : false);
        }
예제 #4
0
 public void UpdateVulcanImpactCameraShakeInstance(UpdateEvent e, VulcanImpactShakerNode vulcan, [JoinAll] CameraShakerNode cameraShaker, [JoinAll] SingleNode <GameCameraShakerSettingsComponent> settings)
 {
     if (vulcan.vulcanImpactCameraShakerInstance.ImpactDataChanged)
     {
         vulcan.vulcanImpactCameraShakerInstance.CameraShakeInstance = cameraShaker.cameraShaker.UpdateImpactShakeInstance(settings.component, vulcan.vulcanImpactCameraShakerInstance.CameraShakeInstance, vulcan.impactCameraShakerConfig, vulcan.vulcanImpactCameraShakerInstance.ImpactDirection.normalized, vulcan.vulcanImpactCameraShakerInstance.WeakeningCoeff);
         vulcan.vulcanImpactCameraShakerInstance.ImpactDataChanged   = false;
     }
 }
예제 #5
0
 public void CheckIfVulcanHitSelfTank(NodeAddedEvent e, [Combine] VulcanStreamHitNode vulcan, CameraShakerNode cameraShaker, SingleNode <GameCameraShakerSettingsComponent> settings)
 {
     if (this.ValidateShakeOnVulcanImpact(vulcan, cameraShaker, settings))
     {
         if (!vulcan.Entity.HasComponent <VulcanImpactCameraShakerInstanceComponent>())
         {
             vulcan.Entity.AddComponent(new VulcanImpactCameraShakerInstanceComponent(vulcan.impactCameraShakerConfig.FadeOutTime));
         }
         else
         {
             vulcan.Entity.GetComponent <VulcanImpactCameraShakerInstanceComponent>().Init(vulcan.impactCameraShakerConfig.FadeOutTime);
         }
     }
 }
예제 #6
0
        public void ShakeOnVulcanShooting(NodeAddedEvent evt, VulcanShootingNode weapon, [Context, JoinByTank] SelfTankNode tank, CameraShakerNode cameraShaker, SingleNode <GameCameraShakerSettingsComponent> settings)
        {
            CameraShakeInstance instance = cameraShaker.cameraShaker.StartShake(settings.component, weapon.kickbackCameraShakerConfig);

            if (instance != null)
            {
                weapon.Entity.AddComponent(new VulcanShootingCameraShakerInstanceComponent(instance, weapon.kickbackCameraShakerConfig.FadeOutTime));
            }
        }
예제 #7
0
 public void ShakeOnShot(SelfShotEvent e, NotVulcanKickbackNode weapon, [JoinByTank] SelfTankNode tank, [JoinAll] CameraShakerNode cameraShaker, [JoinAll] SingleNode <GameCameraShakerSettingsComponent> settings, [JoinAll] SingleNode <MainHUDComponent> hud)
 {
     cameraShaker.cameraShaker.ShakeOnce(settings.component, weapon.kickbackCameraShakerConfig, weapon.weaponCooldown.CooldownIntervalSec);
     hud.component.battleHudRoot.ShakeHUDOnShot(settings.component, weapon.kickbackCameraShakerConfig);
 }