void UCubiquityMeshComponent::setVolumeType()
{
	if (Cast<ACubiquityTerrainVolume>(GetAttachmentRootActor()))
	{
		volumeType = Cubiquity::VolumeType::Terrain;
	}
	else if (Cast<ACubiquityColoredCubesVolume>(GetAttachmentRootActor()))
	{
		volumeType = Cubiquity::VolumeType::ColoredCubes;
	}
	else
	{
		UE_LOG(CubiquityLog, Warning, TEXT("setVolumeType failed to determine the type of the volume"));
	}
}
Пример #2
0
void UTB_AimComponent::UpdateVisibleEnemies()
{
	VisibleEnemies.Empty();
	Character = (ATB_Character *)GetAttachmentRootActor();
	Weapon = Character->Weapon;

	bool EnemyTargetVisible = false;
	
	for (TActorIterator<ATB_Character> Iter(GetWorld(), ATB_Character::StaticClass()); Iter; ++Iter)
	{
		ATB_Character *Enemy = *Iter;
		if (Enemy->HitPoints > 0 && 
			Enemy->TeamName != Character->TeamName &&
			CoverModifier(Enemy) > -100)
		{
			VisibleEnemies.Add(Enemy);
			if (Enemy == EnemyTarget)
			{
				EnemyTargetVisible = true;
			}
		}
	}

	if (!EnemyTargetVisible)
	{
		EnemyTarget = NULL;
	}
}
Пример #3
0
void UTB_AimComponent::UpdateValues()
{
	Character = (ATB_Character *)GetAttachmentRootActor();
	Weapon = Character->Weapon;

	if (EnemyTarget && Weapon)
	{
		// Base Values
		FinalHitChance = Character->RangedAttackSkill;
		FinalDamage = Weapon->BaseDamage;

		// Range
		RangeToTarget = Character->GetDistanceTo(EnemyTarget);
		RangeHitModifier = Weapon->HitModifier(RangeToTarget);
		FinalHitChance += RangeHitModifier;
		RangeDamageModifier = Weapon->DamageModifier(RangeToTarget);
		FinalDamage += RangeDamageModifier;

		// Cover
		CoverHitModifier = CoverModifier(EnemyTarget);
		FinalHitChance += CoverHitModifier;
		CoverDamageModifier = 0;

		// Final sanity check
		FinalHitChance = std::max(0, FinalHitChance);
		if (FinalDamage < 0)
		{
			FinalDamage = 0;
		}
	}
	else
	{
		RangeToTarget = 0;

		RangeHitModifier = 0;
		RangeDamageModifier = 0;
		CoverHitModifier = 0;
		CoverDamageModifier = 0;

		FinalHitChance = 0;
		FinalDamage = 0;
	}
}