Skip to content

MrPlow442/Aquila-Entity-Component-System

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Entity-Component-System

First attempt at creating an Entity Component System.

Using the system:

	aq::World world;
	
	aq::Entity& ent = world.createEntity();
	ent.addComponent(new PositionComponent(0,0));
	ent.addComponent(new VelocityComponent(1,2));
	
	world.addSystem( new MovementSystem() );
	
	for(auto i = 0u; i < 10; ++i)
	{
		world.update();
	}

Creating a component:

	struct PositionComponent : public Component<PositionComponent>
	{
	public:
		float m_x, m_y;
		PositionComponent(float x, float y) : m_x(x), m_y(y) {}
	};

Creating a system:

	class MovementSystem : public System<MovementSystem>
	{
	public:
		MovementSystem()
		{
			registerComponentType<PositionComponent>();
			registerComponentType<VelocityComponent>();
		}
	
		void update(ComponentProvider& extractor) override
		{
			Component<PositionComponent>::Ptr pos = extractor.getComponent<PositionComponent>();
			Component<VelocityComponent>::Ptr vel = extractor.getComponent<VelocityComponent>();
	
			pos->m_x += vel->m_xVel;
			pos->m_y += vel->m_yVel;
	
			std::cout << pos->m_x << " " << pos->m_y << std::endl;
		}
	};

About

First attempt at making an ECS

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages