Advertisement
Guest User

BlackboardTransferTest

a guest
Apr 27th, 2017
213
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.80 KB | None | 0 0
  1. void ACodeAIController::UseCopiedBlackboard(UBlackboardData* newBlackboard)
  2. {
  3.     // Collect list of all keys we have in new blackboard
  4.     TArray<FBlackboardEntry> keys = newBlackboard->Keys;
  5.  
  6.     if (IsValid(newBlackboard->Parent))
  7.         keys.Append(newBlackboard->ParentKeys);
  8.  
  9.     // Store all keys of that type in current blackboard
  10.     TMap<FName, UObject*> cachedObjects;
  11.     for (FBlackboardEntry key : keys)
  12.     {
  13.         if (Cast<UBlackboardKeyType_Object>(key.KeyType))
  14.             cachedObjects.Add(key.EntryName, Blackboard->GetValueAsObject(key.EntryName));
  15.     }
  16.  
  17.     // Set new blackboard
  18.     UseBlackboard(newBlackboard, Blackboard);
  19.  
  20.     // Restore any keys
  21.     for (FBlackboardEntry key : keys)
  22.     {
  23.         if(cachedObjects.Contains(key.EntryName))
  24.             Blackboard->SetValueAsObject(key.EntryName, *cachedObjects.Find(key.EntryName));
  25.     }
  26. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement