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")); } }
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; } }
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; } }