本文整理汇总了C++中UBTNode::SetFlags方法的典型用法代码示例。如果您正苦于以下问题:C++ UBTNode::SetFlags方法的具体用法?C++ UBTNode::SetFlags怎么用?C++ UBTNode::SetFlags使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类UBTNode
的用法示例。
在下文中一共展示了UBTNode::SetFlags方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: PostPlacedNewNode
void UBehaviorTreeGraphNode::PostPlacedNewNode()
{
UClass* NodeClass = ClassData.GetClass(true);
if (NodeClass)
{
UBehaviorTree* BT = Cast<UBehaviorTree>(GetBehaviorTreeGraph()->GetOuter());
if (BT)
{
NodeInstance = ConstructObject<UBTNode>(NodeClass, BT);
UBTNode* BTNode = (UBTNode*)NodeInstance;
BTNode->SetFlags(RF_Transactional);
BTNode->InitializeFromAsset(*BT);
BTNode->InitializeNode(NULL, MAX_uint16, 0, 0);
}
}
}
示例2: RemoveOrphanedNodes
void UBehaviorTreeGraph::RemoveOrphanedNodes()
{
UBehaviorTree* BTAsset = CastChecked<UBehaviorTree>(GetOuter());
// Obtain a list of all nodes that should be in the asset
TSet<UBTNode*> AllNodes;
for (int32 Index = 0; Index < Nodes.Num(); ++Index)
{
UBehaviorTreeGraphNode* MyNode = Cast<UBehaviorTreeGraphNode>(Nodes[Index]);
if (MyNode)
{
UBTNode* MyNodeInstance = Cast<UBTNode>(MyNode->NodeInstance);
if (MyNodeInstance)
{
AllNodes.Add(MyNodeInstance);
}
for (int32 iDecorator = 0; iDecorator < MyNode->Decorators.Num(); iDecorator++)
{
UBehaviorTreeGraphNode_CompositeDecorator* SubgraphNode = Cast<UBehaviorTreeGraphNode_CompositeDecorator>(MyNode->Decorators[iDecorator]);
if (SubgraphNode)
{
TArray<UBTDecorator*> NodeInstances;
TArray<FBTDecoratorLogic> DummyOps;
SubgraphNode->CollectDecoratorData(NodeInstances, DummyOps);
for (int32 SubIdx = 0; SubIdx < NodeInstances.Num(); SubIdx++)
{
AllNodes.Add(NodeInstances[SubIdx]);
}
}
else
{
UBTNode* MyDecoratorNodeInstance = MyNode->Decorators[iDecorator] ? Cast<UBTNode>(MyNode->Decorators[iDecorator]->NodeInstance) : NULL;
if (MyDecoratorNodeInstance)
{
AllNodes.Add(MyDecoratorNodeInstance);
}
}
}
for (int32 iService = 0; iService < MyNode->Services.Num(); iService++)
{
UBTNode* MyServiceNodeInstance = MyNode->Services[iService] ? Cast<UBTNode>(MyNode->Services[iService]->NodeInstance) : NULL;
if (MyServiceNodeInstance)
{
AllNodes.Add(MyServiceNodeInstance);
}
}
}
}
// Obtain a list of all nodes actually in the asset and discard unused nodes
TArray<UObject*> AllInners;
const bool bIncludeNestedObjects = false;
GetObjectsWithOuter(BTAsset, AllInners, bIncludeNestedObjects);
for (auto InnerIt = AllInners.CreateConstIterator(); InnerIt; ++InnerIt)
{
UBTNode* Node = Cast<UBTNode>(*InnerIt);
if (Node && !AllNodes.Contains(Node))
{
Node->SetFlags(RF_Transient);
Node->Rename(NULL, GetTransientPackage(), REN_DontCreateRedirectors | REN_NonTransactional | REN_ForceNoResetLoaders);
}
}
}