Files
esengine/packages/behavior-tree/src/Runtime/Executors/AlwaysFailExecutor.ts

41 lines
1.2 KiB
TypeScript
Raw Normal View History

import { TaskStatus, NodeType } from '../../Types/TaskStatus';
import { INodeExecutor, NodeExecutionContext } from '../NodeExecutor';
import { NodeExecutorMetadata } from '../NodeMetadata';
/**
*
*
*
*/
@NodeExecutorMetadata({
implementationType: 'AlwaysFail',
nodeType: NodeType.Decorator,
displayName: '总是失败',
description: '无论子节点结果如何都返回失败',
category: 'Decorator'
})
export class AlwaysFailExecutor implements INodeExecutor {
execute(context: NodeExecutionContext): TaskStatus {
const { nodeData } = context;
if (!nodeData.children || nodeData.children.length === 0) {
return TaskStatus.Failure;
}
const childId = nodeData.children[0]!;
const status = context.executeChild(childId);
if (status === TaskStatus.Running) {
return TaskStatus.Running;
}
return TaskStatus.Failure;
}
reset(context: NodeExecutionContext): void {
if (context.nodeData.children && context.nodeData.children.length > 0) {
context.runtime.resetNodeState(context.nodeData.children[0]!);
}
}
}