
void renderMeshComponent(any@ data) {
    Entity entity;
    data.retrieve(entity);

    if (!entity.hasMeshComponent())
        return;

    MeshComponent meshComponent = entity.getMeshComponent();

    if (meshComponent.hasMesh) {
        UI::drawIcon("object3d", 32);
    } else {
        UI::drawIcon("empty", 32);
    }

    UI::dragDropTarget("MESH", any(meshComponent), setMeshComponentMesh);

    if (meshComponent.hasMesh) {
        UI::sameline();
        UI::space();
        UI::sameline();

        UI::titleCenterY(meshComponent.getMesh(), 32);
        UI::dragDropTarget("MESH", any(meshComponent), setMeshComponentMesh);
    }

    UI::space(20, 20);

    if (UI::button("Clear")) {
        meshComponent.clear();
    }
    
    UI::sameline();
    UI::space(10, 20);
    UI::sameline();

    if (meshComponent.hasMesh) {
        meshComponent.isActive = UI::checkbox("Active", meshComponent.isActive);
    } else {
        UI::checkboxDisabled("Active", meshComponent.isActive);
    }
}


void setMeshComponentMesh(any@ meshComponent_data, any@ mesh_data){
    string mesh;
    mesh_data.retrieve(mesh);

    MeshComponent meshComponent;
    meshComponent_data.retrieve(meshComponent);

    meshComponent.setMesh(mesh);
}

void removeMeshComponent(any@ entity) {
    Entity ent;
    entity.retrieve(ent);

    if (UI::menuItem("Remove")) {
        ent.removeMeshComponent();
    }
}