public void RemoveChild(BehaviourNode child) { if (child != null) { m_children.Remove(child); } }
public void AddChild(BehaviourNode child) { if (child != null) { m_children.Add(child); } }
public void InsertChild(int index, BehaviourNode child) { if (child != null) { m_children.Insert(index, child); } }
public static string SerializeNode(BehaviourNode behaviourNode) { try { if (behaviourNode == null) { return(null); } StringBuilder builder = new StringBuilder(); JsonWriterSettings settings = new JsonWriterSettings(); settings.TypeHintName = TYPE_HINT_NAME; settings.TypeHintsOnlyWhenNeeded = true; settings.MaxDepth = MAX_TREE_DEPTH; using (JsonWriter writer = new JsonWriter(builder, settings)) { writer.Write(new object[] { behaviourNode }); } return(builder.ToString()); } catch (Exception ex) { Debug.LogException(ex); return(null); } }
protected override void OnEnter(AIAgent agent) { if (m_children.Count > 0) { m_chosenChild = m_children[UnityEngine.Random.Range(0, m_children.Count)]; } else { m_chosenChild = null; } }
public static BehaviourNode CreateNode(Type nodeType) { BehaviourNode node = null; if (nodeType != null && nodeType.IsSubclassOf(typeof(BehaviourNode)) && !nodeType.IsAbstract) { node = Activator.CreateInstance(nodeType) as BehaviourNode; if (node != null) { FieldInfo uniqueIDField = typeof(BehaviourNode).GetField("m_uniqueID", BindingFlags.Instance | BindingFlags.NonPublic); string uniqueID = GenerateUniqueStringID(); uniqueIDField.SetValue(node, uniqueID); } } return(node); }
private BehaviourNode ChooseRandomChild() { BehaviourNode child = null; float rand = UnityEngine.Random.value; for (int i = 0; i < m_children.Count; i++) { if (rand < m_weights[i]) { child = m_children[i]; break; } rand -= m_weights[i]; } return(child); }
public void SetChild(BehaviourNode node) { m_child = node; }