// This Header is auto generated by BDSLiteLoader Toolchain
#pragma once
#define AUTO_GENERATED
#include "../Global.h"
#include "Json.hpp"

#define BEFORE_EXTRA

#undef BEFORE_EXTRA

class BehaviorFactory {

#define AFTER_EXTRA

#undef AFTER_EXTRA
#ifndef DISABLE_CONSTRUCTOR_PREVENTION_BEHAVIORFACTORY
public:
    class BehaviorFactory& operator=(class BehaviorFactory const &) = delete;
    BehaviorFactory(class BehaviorFactory const &) = delete;
    BehaviorFactory() = delete;
#endif

public:
#ifdef ENABLE_VIRTUAL_FAKESYMBOL_BEHAVIORFACTORY
#endif
    MCAPI std::unique_ptr<class BehaviorDefinition> loadNodeDefinition(std::string const &, class Json::Value, class BehaviorTreeDefinitionPtr &) const;
    MCAPI void registerNodePair(std::string const &, class std::function<std::unique_ptr<class BehaviorDefinition> (void)>, class std::function<std::unique_ptr<class BehaviorNode> (void)>);
    MCAPI std::unique_ptr<class BehaviorDefinition> tryGetDefinition(std::string const &) const;
    MCAPI std::unique_ptr<class BehaviorNode> tryGetNode(std::string const &) const;

//private:
    MCAPI void _initNodes();

private:

};