namespace Quantum { public static unsafe partial class AIParamExtensions { public static T ResolveFromHFSM(this AIParam aiParam, Frame frame, EntityRef entity) { var aiConfigRef = aiParam.Source == AIParamSource.Config ? frame.Unsafe.GetPointer(entity)->Config : default; return aiParam.Resolve(frame, entity, aiConfigRef); } public static T ResolveFromGOAP(this AIParam aiParam, Frame frame, EntityRef entity) { var aiConfigRef = aiParam.Source == AIParamSource.Config ? frame.Unsafe.GetPointer(entity)->Config : default; return aiParam.Resolve(frame, entity, aiConfigRef); } public static T ResolveFromBT(this AIParam aiParam, Frame frame, EntityRef entity) { var aiConfigRef = aiParam.Source == AIParamSource.Config ? frame.Unsafe.GetPointer(entity)->Config : default; return aiParam.Resolve(frame, entity, aiConfigRef); } public static T Resolve(this AIParam aiParam, Frame frame, EntityRef entity, AssetRefAIConfig aiConfigRef) { var blackboard = aiParam.Source == AIParamSource.Blackboard ? frame.Unsafe.GetPointer(entity) : null; var aiConfig = aiParam.Source == AIParamSource.Config ? frame.FindAsset(aiConfigRef.Id) : null; return aiParam.Resolve(frame, entity, blackboard, aiConfig); } } }