public static NodeState Tick(int index, INodeBlob blob, IBlackboard blackboard) { var animator = blackboard.GetData <Animator>(); animator.SetTrigger(blob.GetNodeData <SetAnimatorTriggerNode>(index).Value); return(NodeState.Success); }
public NodeState Tick(int index, INodeBlob blob, IBlackboard blackboard) { var intVariable = IntBlobVariable.GetData(index, blob, blackboard);// by value //ref var intVariable = IntBlobVariable.GetDataRef(index, blob, blackboard); // by reference return(NodeState.Success); }
public static unsafe void ResetRuntimeData(this INodeBlob blob, int index, int count = 1) { var dest = (void *)blob.GetRuntimeDataPtr(index); var src = (void *)blob.GetDefaultDataPtr(index); UnsafeUtility.MemCpy(dest, src, blob.GetNodeDataSize(index, count)); }
public NodeState Tick(int index, INodeBlob blob, IBlackboard bb) { var input = bb.GetData <InputActionAssetComponent>().Value; var action = input.FindAction(ActionId); return(action != null && action.phase == Phase ? NodeState.Success : NodeState.Failure); }
public NodeState Tick(int index, INodeBlob blob, IBlackboard blackboard) { if (blob.GetState(index) == NodeState.Running) { var childIndex = blob.FirstOrDefaultChildIndex(index, state => state == NodeState.Running); return(childIndex != default ? VirtualMachine.Tick(childIndex, blob, blackboard) : 0); } var weightIndex = 0; var currentMaxWeight = int.MinValue; var maxChildIndex = 0; foreach (var childIndex in blob.GetChildrenIndices(index)) { var weight = Weights[weightIndex]; if (weight > currentMaxWeight) { maxChildIndex = childIndex; currentMaxWeight = weight; } weightIndex++; } return(VirtualMachine.Tick(maxChildIndex, blob, blackboard)); }
public static NodeState Tick(int index, INodeBlob blob, IBlackboard bb) { var typeId = blob.GetTypeId(index); var state = _TICKS[typeId](index, blob, bb); blob.SetState(index, state); return(state); }
public static NodeState Tick(int index, INodeBlob blob, IBlackboard bb) { var look = bb.GetData <BTInputLookData>().Value; var direction = quaternion.LookRotation(new float3(look.x, 0, look.y), math.up()); bb.GetDataRef <BTTransformRotationData>().Value = direction; return(NodeState.Success); }
public unsafe ref T GetDataRef(int index, INodeBlob blob, IBlackboard bb) { // NOTE: error CS8170: Struct members cannot return 'this' or other instance members by reference // return ref VariableRegisters<T>.GetDataRef(VariableId)(ref this, index, blob, bb); var ptr = UnsafeUtility.AddressOf(ref VariableRegisters <T> .GetDataRef(VariableId)(ref this, index, blob, bb)); return(ref UnsafeUtilityEx.AsRef <T>(ptr)); }
public static NodeState Tick(int index, INodeBlob blob, IBlackboard __) { var data = blob.GetNodeData <NodeB>(index); var state = data.B == data.BB ? NodeState.Success : NodeState.Failure; Debug.Log($"[B]: tick {index} {state}"); return(state); }
public NodeState Tick(int index, INodeBlob blob, IBlackboard _) { if (PrioritySelectorIndex < 0) { return(NodeState.Failure); } ref var prioritySelectorData = ref blob.GetNodeDefaultData <PrioritySelectorNode>(PrioritySelectorIndex);
public static NodeState Tick(int index, INodeBlob blob, IBlackboard blackboard) { var data = blob.GetNodeData <Data>(index); var state = data.A == 0 ? NodeState.Failure : NodeState.Success; Debug.Log($"[A]: tick {index} {state}"); return(state); }
public static NodeState Tick(int index, INodeBlob blob, IBlackboard bb) { if (!bb.HasData <IsRunOnMainThread>()) { return(blob.TickChildren(index, bb).FirstOrDefault()); } ref var isRunOnMainThread = ref bb.GetDataRef <IsRunOnMainThread>();
public static IEnumerable <NodeState> TickChildren( this INodeBlob blob , int index , IBlackboard bb ) { return(TickChildren(blob, index, bb, state => false, state => !state.IsCompleted())); }
public static NodeState Tick(int index, INodeBlob blob, IBlackboard bb) { var input = bb.GetData <InputActionAssetComponent>().Value; var data = blob.GetNodeData <CheckInputActionPhaseNode>(index); var action = input.FindAction(data.ActionId); return(action != null && action.phase == data.Phase ? NodeState.Success : NodeState.Failure); }
public static NodeState Tick(int index, INodeBlob blob, IBlackboard bb) { var typeId = blob.GetTypeId(index); var ptr = blob.GetRuntimeDataPtr(index); var state = MetaNodeRegister.NODES[typeId].Tick.Invoke(ptr, index, blob, bb); blob.SetState(index, state); return(state); }
public static IEnumerable <NodeState> TickChildren( this INodeBlob blob , int index , IBlackboard bb , Predicate <NodeState> breakCheck ) { return(TickChildren(blob, index, bb, breakCheck, state => !state.IsCompleted())); }
public static void ResetChildren(this INodeBlob blob, int parentIndex, IBlackboard bb) { // TODO: reset children which is not NodeState.None? var firstChildIndex = parentIndex + 1; var lastChildIndex = blob.GetEndIndex(parentIndex); var childCount = lastChildIndex - firstChildIndex; VirtualMachine.Reset(firstChildIndex, blob, bb, childCount); }
public static NodeState Tick(int index, INodeBlob blob, IBlackboard bb) { var controller = bb.GetData <CharacterController>(); if (controller == null) { return(NodeState.Failure); } ref var data = ref blob.GetNodeData <CharacterSimpleMoveNode>(index);
public static NodeState Tick(int index, INodeBlob blob, IBlackboard bb) { var input = bb.GetData <BTInputMoveData>(); var direction = new Vector3(input.Value.x, 0, input.Value.y).normalized; var speed = blob.GetNodeData <InputMoveToCharacterVelocityNode>(index).Speed; bb.GetDataRef <BTCharacterSimpleMoveVelocity>().Value = direction * speed; return(NodeState.Success); }
public static IEnumerable <ComponentType> GetAccessTypes(int index, INodeBlob blob) { var typeId = blob.GetTypeId(index); var ptr = blob.GetRuntimeDataPtr(index); var node = MetaNodeRegister.NODES[typeId]; var runtimeTypes = node.RuntimeTypes.SelectMany(r => r.Func.Invoke(ptr + r.Offset)); return(node.StaticTypes.Concat(runtimeTypes)); }
public NodeState Tick(int index, INodeBlob blob, IBlackboard bb) { var deltaTime = bb.GetData <BehaviorTreeTickDeltaTime>().Value; var transform = bb.GetData <Transform>(); var deltaMove = Velocity * deltaTime; transform.position += deltaMove; return(NodeState.Running); }
public static NodeState Tick(int index, INodeBlob blob, IBlackboard bb) { var inputValue = bb.ReadInputActionValue <InputLookNode, Vector2>(index, blob); if (!inputValue.HasValue) { return(NodeState.Failure); } ref var data = ref blob.GetNodeData <InputLookNode>(index);
public NodeState Tick(int index, INodeBlob blob, IBlackboard blackboard) { if (blob.GetState(index) == NodeState.Running) { var childIndex = blob.FirstOrDefaultChildIndex(index, state => state == NodeState.Running); return(childIndex != default ? VirtualMachine.Tick(childIndex, blob, blackboard) : 0); } ref var data = ref blob.GetNodeData <WeightRandomSelectorNode>(index);
public static NodeState Tick(int index, INodeBlob blob, IBlackboard blackboard) { if (blob.GetState(index) == NodeState.Running) { var childIndex = blob.GetChildrenIndices(index, state => state == NodeState.Running).FirstOrDefault(); return(childIndex != default ? VirtualMachine.Tick(childIndex, blob, blackboard) : 0); } ref var data = ref blob.GetNodeData <PrioritySelectorNode>(index);
public NodeState Tick(int index, INodeBlob blob, IBlackboard bb) { var input = InputMove.GetData(index, blob, bb); var direction = new Vector3(input.x, 0, input.y).normalized; var speed = Speed.GetData(index, blob, bb); OutputVelocity.GetDataRef(index, blob, bb) = direction * speed; return(NodeState.Success); }
public static NodeState Tick(int index, INodeBlob blob, IBlackboard blackboard) { var childState = blob.TickChildren(index, blackboard).FirstOrDefault(); if (childState == 0) { blob.ResetChildren(index, blackboard); childState = blob.TickChildren(index, blackboard).FirstOrDefault(); } ref var data = ref blob.GetNodeData <RepeatTimesNode>(index);
public static void Reset(int fromIndex, INodeBlob blob, IBlackboard bb, int count = 1) { blob.ResetStates(fromIndex, count); blob.ResetRuntimeData(fromIndex, count); for (var i = fromIndex; i < fromIndex + count; i++) { var typeId = blob.GetTypeId(i); _RESETS[typeId](i, blob, bb); } }
public static void Reset(int fromIndex, INodeBlob blob, IBlackboard bb, int count = 1) { blob.ResetStates(fromIndex, count); blob.ResetRuntimeData(fromIndex, count); for (var i = fromIndex; i < fromIndex + count; i++) { var typeId = blob.GetTypeId(i); var ptr = blob.GetRuntimeDataPtr(i); MetaNodeRegister.NODES[typeId].Reset.Invoke(ptr, i, blob, bb); } }
public static NodeState Tick(int index, INodeBlob blob, IBlackboard blackboard) { if (blob.GetState(index) == NodeState.Running) { var childIndex = blob.GetChildrenIndices(index, state => state == NodeState.Running).FirstOrDefault(); return(childIndex != default ? VirtualMachine.Tick(childIndex, blob, blackboard) : 0); } var chosenIndex = 0; uint maxNumber = 0; ref var random = ref blackboard.GetDataRef <BehaviorTreeRandom>().Value;
public static NodeState Tick(int index, INodeBlob blob, IBlackboard bb) { var inputValue = bb.ReadInputActionValue <InputAimPositionNode, Vector2>(index, blob); if (!inputValue.HasValue) { return(NodeState.Failure); } bb.GetDataRef <BTInputAimPositionData>().Value = inputValue.Value; return(NodeState.Success); }