该项目的目的是同时测试和演示来自 Unity DOTS 技术堆栈的多个新包。
您最多选择25个主题 主题必须以中文或者字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
 
 
 
 

47 行
1.5 KiB

using System.Collections;
using System.Collections.Generic;
using Unity.Entities;
using Unity.Sample.Core;
using UnityEngine;
public class DecisionTree
{
public static void SetOwner(EntityManager entityManager, Entity nodeEntity, Entity owner)
{
var descendents = entityManager.GetBuffer<DecisionTreeNode.SubtreeElement>(nodeEntity);
for (int i = 0; i < descendents.Length; i++)
{
var descendent = descendents[i].root;
var nodeData = entityManager.GetComponentData<DecisionTreeNode.State>(descendent);
nodeData.owner = owner;
entityManager.SetComponentData(descendent, nodeData);
}
}
public static Entity FindValidDecisionNode(
BufferFromEntity<DecisionTreeNode.SubtreeElement> decisionTreeNodeSubtreeElementBufferFromEntity,
ComponentDataFromEntity<DecisionTreeNode.State> decisionTreeNodeStateFromEntity,
Entity nodeEntity)
{
var descendents = decisionTreeNodeSubtreeElementBufferFromEntity[nodeEntity];
var result = Entity.Null;
int i = 0;
int end = descendents.Length;
while (i < end)
{
var subtree = descendents[i];
if (decisionTreeNodeStateFromEntity[subtree.root].isTrue)
{
result = subtree.root;
end = i + subtree.count;
i++;
}
else
{
i += subtree.count;
}
}
return result;
}
}