void UAvoidanceManager::UpdateRVO(int32 inAvoidanceUID, FVector inCenter, float inRadius, float inHeight, FVector inVelocity, float inWeight, int32 GroupMask, int32 AvoidMask, int32 IgnoreMask) { FNavAvoidanceData NewAvoidanceData; NewAvoidanceData.Init(this, inCenter, inRadius, inHeight, inVelocity, inWeight, GroupMask, AvoidMask, IgnoreMask); UpdateRVO_Internal(inAvoidanceUID, NewAvoidanceData); }
void UAvoidanceManager::UpdateRVO(UMovementComponent* MovementComp) { if (IRVOAvoidanceInterface* AvoidingComp = Cast<IRVOAvoidanceInterface>(MovementComp)) { FNavAvoidanceData NewAvoidanceData(this, AvoidingComp); UpdateRVO_Internal(AvoidingComp->GetRVOAvoidanceUID(), NewAvoidanceData); } }
bool UAvoidanceManager::RegisterMovementComponent(UMovementComponent* MovementComp, float AvoidanceWeight) { if (IRVOAvoidanceInterface* AvoidingComp = Cast<IRVOAvoidanceInterface>(MovementComp)) { const int32 NewAvoidanceUID = GetNewAvoidanceUID(); AvoidingComp->SetRVOAvoidanceUID(NewAvoidanceUID); AvoidingComp->SetRVOAvoidanceWeight(AvoidanceWeight); RequestUpdateTimer(); FNavAvoidanceData AvoidanceData(this, AvoidingComp); UpdateRVO_Internal(AvoidingComp->GetRVOAvoidanceUID(), AvoidanceData); return true; } return false; }