#ifndef INCLUDED_APPLICATION
#define INCLUDED_APPLICATION

#include "SceneGraph.h"
#include "MainLoop.h"
#include "viewer.h"

typedef void (*Move_func)(SceneGraph* node, int screen_w, int screen_h);
typedef void (*Coll_func)(SceneGraph* node, int screen_w, int screen_h, SceneGraphPtr tree);

class Viewer;

class Application {
public:
    Application();
    virtual ~Application();

    virtual bool app_loop(Viewer *viewer){ return 1; /* use all execute */ };
    virtual HTaskPtr application_task(HTaskPtr next, Viewer* viewer){return next;};
    virtual MainLoopPtr init(Viewer *viewer, int w, int h)  = 0;
};

#endif
