/*#include "CEntityFactory.hpp"
#include "CEntity.hpp"
#include "Components/Graphic/Renderers/CMeshRenderer.hpp"
#include "Components/Physic/CRigidBody.hpp"
#include "Components/Physic/CCollider.hpp"
#include "../Graphic/Material/SMaterial.hpp"
#include "../Graphic/Material/SColor.hpp"

CEntity* CEntityFactory::createCube(CScene* e) {
    std::string name = "Cube" + std::to_string(CEntity::entityNumber);
    CEntity* cube = new CEntity(name, glm::vec3(0.0f, 0.0f, 0.0f), glm::vec3(1.0f, 1.0f, 1.0f), glm::vec3(0.0f, 0.0f, 0.0f));
    cube->setScene(e);
    CRigidBody* body = new CRigidBody(cube);
    CCollider* geom = new CCollider(cube, GEOM_BOX, body->getMass());
    CMeshRenderer* renderer = new CMeshRenderer(cube);
    renderer->createPremadeMesh(4, MODEL_CUBE);
    cube->attachComponent(body);
    cube->attachComponent(geom);
    cube->attachComponent(renderer);
    e->addEntity(cube);
    return cube;
}

CEntity* CEntityFactory::createSphere(CScene* e) {
    std::string name = "Sphere" + std::to_string(CEntity::entityNumber);
    CEntity* sphere = new CEntity(name, glm::vec3(0.0f, 0.0f, 0.0f), glm::vec3(1.0f, 1.0f, 1.0f), glm::vec3(0.0f, 0.0f, 0.0f));
    sphere->setScene(e);
    CRigidBody* body = new CRigidBody(sphere);
    CCollider* geom = new CCollider(sphere, GEOM_SPHERE, body->getMass());
    CMeshRenderer* renderer = new CMeshRenderer(sphere);
    renderer->createPremadeMesh(4, MODEL_SPHERE);
    sphere->attachComponent(body);
    sphere->attachComponent(geom);
    sphere->attachComponent(renderer);
    e->addEntity(sphere);
    return sphere;
}

CEntity* CEntityFactory::createCylinder(CScene* e) {
    std::string name = "Cylindre" + std::to_string(CEntity::entityNumber);
    CEntity* cylindre = new CEntity(name, glm::vec3(0.0f, 0.0f, 0.0f), glm::vec3(1.0f, 1.0f, 1.0f), glm::vec3(0.0f, 0.0f, 0.0f));
    cylindre->setScene(e);
    CRigidBody* body = new CRigidBody(cylindre);
    CCollider* geom = new CCollider(cylindre, GEOM_CYLINDRE, body->getMass());
    CMeshRenderer* renderer = new CMeshRenderer(cylindre);
    renderer->createPremadeMesh(4, MODEL_CYLINDRE);
    cylindre->attachComponent(body);
    cylindre->attachComponent(geom);
    cylindre->attachComponent(renderer);
    e->addEntity(cylindre);
    return cylindre;
}

CEntity* CEntityFactory::createPlane(CScene* e) {
    std::string name = "Ground";
    CEntity* ground = new CEntity(name, glm::vec3(0.0f, 0.0f, -1.2f), glm::vec3(100.0f, 100.0f, 100.0f), glm::vec3(glm::radians(270.0f), glm::radians(180.0f), glm::radians(270.0f)));
    ground->setScene(e);
    CCollider* geom = new CCollider(ground, GEOM_PLANE);
    CMeshRenderer* renderer = new CMeshRenderer(ground);
    renderer->createPremadeMesh(4, MODEL_PLANE);
    ground->attachComponent(geom);
    ground->attachComponent(renderer);
    e->addEntity(ground);
    return ground;
}


CEntity* CEntityFactory::createReferenceAxis(CScene* e) {

    std::string name = std::to_string(CEntity::entityNumber);

    CEntity* r0 = new CEntity("R0" + name, glm::vec3(0.0f, -40.0f, 0.0f), glm::vec3(1.0f, 1.0f, 1.0f), glm::vec3(0.0f, 0.0f, 0.0f));

    CEntity* r1 = new CEntity("Ex" + name, glm::vec3(5.0f, 0.0f, 0.0f), glm::vec3(5.0f, 1.0f, 1.0f), glm::vec3(0.0f, 0.0f, 0.0f));

    CEntity* r2 = new CEntity("Ey" + name, glm::vec3(0.0f, 5.0f, 0.0f), glm::vec3(1.0f, 5.0f, 1.0f), glm::vec3(0.0f, 0.0f, 0.0f));

    CEntity* r3 = new CEntity("Ez" + name, glm::vec3(0.0f, 0.0f, 5.0f), glm::vec3(1.0f, 1.0f, 5.0f), glm::vec3(0.0f, 0.0f, 0.0f));
    
    r0->setScene(e);
    r1->setScene(e);
    r2->setScene(e);
    r3->setScene(e);

    r0->addChild(r1);
    r0->addChild(r2);
    r0->addChild(r3);

    SMaterial* xMat = new SMaterial;
    xMat->m_shader = CKernel::m_mainShader;
    SColor xColor;
    xColor.m_type = EColorType::COLOR_DIFFUSE;
    xColor.m_vector = glm::vec4(1.0f, 0.0f, 0.0f, 1.0f);
    xMat->m_colors.push_back(xColor);
    SMaterial* yMat = new SMaterial;
    yMat->m_shader = CKernel::m_mainShader;
    SColor yColor;
    yColor.m_type = EColorType::COLOR_DIFFUSE;
    yColor.m_vector = glm::vec4(0.0f, 1.0f, 0.0f, 1.0f);
    yMat->m_colors.push_back(yColor);
    SMaterial* zMat = new SMaterial;
    zMat->m_shader = CKernel::m_mainShader;
    SColor zColor;
    zColor.m_type = EColorType::COLOR_DIFFUSE;
    zColor.m_vector = glm::vec4(0.0f, 0.0f, 1.0f, 1.0f);
    zMat->m_colors.push_back(zColor);


    CMeshRenderer* xRender = new CMeshRenderer(r1);
    CMeshRenderer* yRender = new CMeshRenderer(r2);
    CMeshRenderer* zRender = new CMeshRenderer(r3);
    xRender->createPremadeMesh(4, MODEL_CUBE, xMat);
    yRender->createPremadeMesh(4, MODEL_CUBE, yMat);
    zRender->createPremadeMesh(4, MODEL_CUBE, zMat);

    r1->attachComponent(xRender);
    r2->attachComponent(yRender);
    r3->attachComponent(zRender);

    e->addEntity(r0);

    return r0;
}
*/