Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void ACodeAIController::UseCopiedBlackboard(UBlackboardData* newBlackboard)
- {
- // Collect list of all keys we have in new blackboard
- TArray<FBlackboardEntry> keys = newBlackboard->Keys;
- if (IsValid(newBlackboard->Parent))
- keys.Append(newBlackboard->ParentKeys);
- // Store all keys of that type in current blackboard
- TMap<FName, UObject*> cachedObjects;
- for (FBlackboardEntry key : keys)
- {
- if (Cast<UBlackboardKeyType_Object>(key.KeyType))
- cachedObjects.Add(key.EntryName, Blackboard->GetValueAsObject(key.EntryName));
- }
- // Set new blackboard
- UseBlackboard(newBlackboard, Blackboard);
- // Restore any keys
- for (FBlackboardEntry key : keys)
- {
- if(cachedObjects.Contains(key.EntryName))
- Blackboard->SetValueAsObject(key.EntryName, *cachedObjects.Find(key.EntryName));
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement