1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
|
#include "GraphNodeFactory.h"
#include "GraphNodeFadeController.h"
#include "GraphNodeLoopController.h"
#include "GraphNodeGroup2Controller.h"
#include "GraphNodeEventController.h"
#include "GraphNodeWeightController.h"
#include "GraphNodePositionController.h"
#include "GraphNodeSkeletonState.h"
namespace demo
{
GraphNodeFactory::GraphNodeFactory()
{
addConstruct("GraphNodeFadeController", new GraphNodeConstruct<GraphNodeFadeController>());
addConstruct("GraphNodeLoopController", new GraphNodeConstruct<GraphNodeLoopController>());
addConstruct("GraphNodeGroup2Controller", new GraphNodeConstruct<GraphNodeGroup2Controller>());
addConstruct("GraphNodeEventController", new GraphNodeConstruct<GraphNodeEventController>());
addConstruct("GraphNodeWeightController", new GraphNodeConstruct<GraphNodeWeightController>());
addConstruct("GraphNodePositionController", new GraphNodeConstruct<GraphNodePositionController>());
addConstruct("GraphNodeSkeletonState", new GraphNodeConstruct<GraphNodeSkeletonState>());
}
GraphNodeFactory::~GraphNodeFactory()
{
for (MapConstruct::iterator item = mConstructs.begin(); item != mConstructs.end(); ++ item)
delete (*item).second;
mConstructs.clear();
}
BaseAnimationNode* GraphNodeFactory::createNode(const std::string& _type, const std::string& _name)
{
MapConstruct::iterator item = mConstructs.find(_type);
if (item == mConstructs.end())
return nullptr;
return (*item).second->create(_name);
}
void GraphNodeFactory::addConstruct(const std::string& _type, IGraphNodeConstruct* _construct)
{
mConstructs[_type] = _construct;
}
} // namespace demo
|