From 9474767c68c48eff2618df80433b0b81ebf529c6 Mon Sep 17 00:00:00 2001 From: chai Date: Tue, 20 Nov 2018 21:43:01 +0800 Subject: =?UTF-8?q?*=E5=8A=A8=E7=94=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- examples/animation/main.cpp | 102 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 102 insertions(+) create mode 100644 examples/animation/main.cpp (limited to 'examples/animation/main.cpp') diff --git a/examples/animation/main.cpp b/examples/animation/main.cpp new file mode 100644 index 0000000..033e499 --- /dev/null +++ b/examples/animation/main.cpp @@ -0,0 +1,102 @@ +#include + +#include "libjin/jin.h" + +using namespace std; +using namespace JinEngine::AI; +using namespace JinEngine::Game; +using namespace JinEngine::Math; +using namespace JinEngine::Input; +using namespace JinEngine::Graphics; +using namespace JinEngine::Graphics::Shaders; +using namespace JinEngine::Graphics::Particles; +using namespace JinEngine::Graphics::Animations; +using namespace JinEngine::Filesystem; +using namespace JinEngine::Time; + +Timer timer; +Timer::Handler* hnd; +Texture* tex; +Shader* shader; +Animation anim; +const char* shader_code = R"( +#VERTEX_SHADER +Vertex vert(Vertex v) +{ + return v; +} +#END_VERTEX_SHADER +#FRAGMENT_SHADER +Color frag(Color col, Texture tex, Vertex v) +{ + Color c = texel(tex, v.uv); + return c * col; +} +#END_FRAGMENT_SHADER +)"; +const float Pi = 3.14f; +void onLoad() +{ + tex = Texture::createTexture("anim.png"); + shader = Shader::createShader(shader_code); + SpriteSheet ss = SpriteSheet(tex); + vector frames = ss.createSprites(1, 19, 246, 238, Sprite::Origin::BottomCenter); + anim.addFrames(frames); + anim.setSpeed(0.05); +} + +void onEvent(Event* e) +{ + static Application* Application = Application::get(); + if (e->type == EventType::QUIT) + Application->stop(); +} + +void onUpdate(int ms) +{ + anim.update(ms / 1000.f); + timer.update(ms); +} + +void onDraw() +{ + shader->use(); + Mouse* m = Mouse::get(); + int x, y; + m->getState(&x, &y); + anim.render(x, y, 1, 1, 0); + shader->unuse(); +} + +int main(int argc, char* argv[]) +{ + Application* Application = Application::get(); + Application::Setting setting; + setting.loader = onLoad; + setting.eventHandler = onEvent; + setting.updater = onUpdate; + setting.drawer = onDraw; + Application->init(&setting); + + AssetDatabase::get()->mount("."); + + Window* wnd = Window::get(); + Window::Setting wndSetting; + wndSetting.width = 600; + wndSetting.height = 512; + wndSetting.title = "Jin v0.1.1"; + wndSetting.fps = 60; + wndSetting.vsync = false; + wndSetting.fullscreen = false; + wndSetting.resizable = false; + wndSetting.icon = "."; + wnd->init(&wndSetting); + wnd->show(); + + Application->run(); + + Application->quit(); + wnd->quit(); + + return 0; +} \ No newline at end of file -- cgit v1.1-26-g67d0