#include #include #include using namespace crepe; using namespace std; class AnimationScript : public Script { Transform * transform; float t = 0; void init() { transform = &get_component(); } void update() { t += 0.05; transform->position = {sin(t), cos(t)}; } }; class Timeline : public Script { unsigned i = 0; recording_t recording; void update() { switch (i++) { default: break; case 10: logf("record start"); replay.record_start(); break; case 60: logf("record end, playing recording"); this->recording = replay.record_end(); replay.play(this->recording); break; case 61: logf("done, releasing recording"); replay.release(this->recording); break; case 72: logf("exit"); queue_event(); break; }; } }; class TestScene : public Scene { public: using Scene::Scene; void load_scene() { Mediator & mediator = this->mediator; ComponentManager & mgr = mediator.component_manager; GameObject cam = mgr.new_object("cam"); cam.add_component( ivec2 {640, 480}, vec2 {3, 3}, Camera::Data { .bg_color = Color::WHITE, } ); GameObject square = mgr.new_object("square"); square.add_component( Asset {"asset/texture/square.png"}, Sprite::Data { .size = {0.5, 0.5}, } ); square.add_component().set_script(); GameObject scapegoat = mgr.new_object(""); scapegoat.add_component().set_script(); } string get_name() const { return "scene1"; } }; int main(int argc, char * argv[]) { Config & cfg = Config::get_instance(); cfg.log.level = Log::Level::DEBUG; Engine engine; engine.add_scene(); return engine.main(); }