void Shoot(GunEntityView playerGunEntityView) { var playerGunComponent = playerGunEntityView.gunComponent; var playerGunHitComponent = playerGunEntityView.gunHitTargetComponent; playerGunComponent.timer = 0; playerGunComponent.currentBulletCount -= 1; var gunInfo = new GunInfo(playerGunComponent.magazineCapacity, playerGunComponent.currentBulletCount); _ammoSequence.Next(this, ref gunInfo); Vector3 point; var entityHit = _rayCaster.CheckHit(playerGunComponent.shootRay, playerGunComponent.range, ENEMY_LAYER, SHOOTABLE_MASK | ENEMY_MASK, out point); if (entityHit != -1) { PlayerTargetEntityView targetComponent; //note how the GameObject GetInstanceID is used to identify the entity as well if (entityViewsDB.TryQueryEntityView(entityHit, out targetComponent)) { var damageInfo = new DamageInfo(playerGunComponent.damagePerShot, point, entityHit, EntityDamagedType.Enemy); _enemyDamageSequence.Next(this, ref damageInfo); playerGunComponent.lastTargetPosition = point; playerGunHitComponent.targetHit.value = true; return; } } playerGunHitComponent.targetHit.value = false; }
protected override void Add(GunEntityView entityView) { _playerGunEntityView = entityView; var playerGunComponent = _playerGunEntityView.gunComponent; var gunInfo = new GunInfo(playerGunComponent.magazineCapacity, playerGunComponent.currentBulletCount); _ammoSequence.Next(this, ref gunInfo); }