Files
esengine/packages/behavior-tree/src/Runtime/Executors/RandomProbability.ts
YHH 61813e67b6 refactor(behavior-tree)!: 迁移到 Runtime 执行器架构 (#196)
* refactor(behavior-tree)!: 迁移到 Runtime 执行器架构

* fix(behavior-tree): 修复LogAction中的ReDoS安全漏洞

* feat(behavior-tree): 完善行为树核心功能并修复类型错误
2025-10-31 17:27:38 +08:00

40 lines
1.1 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import { TaskStatus, NodeType } from '../../Types/TaskStatus';
import { INodeExecutor, NodeExecutionContext, BindingHelper } from '../NodeExecutor';
import { NodeExecutorMetadata } from '../NodeMetadata';
/**
* 随机概率条件执行器
*
* 根据概率返回成功或失败
*/
@NodeExecutorMetadata({
implementationType: 'RandomProbability',
nodeType: NodeType.Condition,
displayName: '随机概率',
description: '根据概率返回成功或失败',
category: 'Condition',
configSchema: {
probability: {
type: 'number',
default: 0.5,
description: '成功概率0-1',
min: 0,
max: 1,
supportBinding: true
}
}
})
export class RandomProbability implements INodeExecutor {
execute(context: NodeExecutionContext): TaskStatus {
const probability = BindingHelper.getValue<number>(context, 'probability', 0.5);
const clampedProbability = Math.max(0, Math.min(1, probability));
if (Math.random() < clampedProbability) {
return TaskStatus.Success;
}
return TaskStatus.Failure;
}
}