// Project Lab - NHTV Igad #include "UnrealProject.h" #include "AbilityInfo.h" #include "AbilityState.h" namespace { inline uint32 Hash32(const void* data, uint32 length) { const uint32 offset = 2166136261U; const uint32 prime = 16777619U; const unsigned char* data_bytes = (const unsigned char*)data; uint32 value = offset; for (uint32 next = 0; next < length; ++next) { value ^= (uint32)data_bytes[next]; value *= prime; } return value; } } UAbilityInfo::UAbilityInfo() { name = L""; description = L""; cooldown = 1.0f; AICastRange = 0.0f; rotateTowardsPlayer = false; abilityState = AAbilityState::StaticClass(); FString strName = GetPathName(); m_hash = Hash32(strName.GetCharArray().GetData(), strName.Len() * sizeof(wchar_t)); } uint32 UAbilityInfo::GetStaticHash() const { return m_hash; } void AAbilityState::NativeSetCooldown() { SetCooldown(); cooldownRate = (currentCooldownDuration > 0.0f) ? (onCooldownTimer / currentCooldownDuration) : 0.0f; } void AAbilityState::SetCooldown_Implementation() { currentCooldownDuration = info->cooldown; onCooldownTimer = currentCooldownDuration; } bool AAbilityState::IsMaxed() const { return power >= 1.0f; }