const UBlackboardData* FBlackboardSelectorDetails::FindBlackboardAsset(UObject* InObj) { for (UObject* TestOb = InObj; TestOb; TestOb = TestOb->GetOuter()) { UBTNode* NodeOb = Cast<UBTNode>(TestOb); if (NodeOb) { return NodeOb->GetBlackboardAsset(); } } return NULL; }
END_SLATE_FUNCTION_BUILD_OPTIMIZATION void FBlackboardDecoratorDetails::CacheBlackboardData(IDetailLayoutBuilder& DetailLayout) { TArray<TWeakObjectPtr<UObject> > MyOuters; DetailLayout.GetObjectsBeingCustomized(MyOuters); CachedBlackboardAsset.Reset(); for (int32 i = 0; i < MyOuters.Num(); i++) { UBTNode* NodeOb = Cast<UBTNode>(MyOuters[i].Get()); if (NodeOb) { CachedBlackboardAsset = NodeOb->GetBlackboardAsset(); break; } } }