aboutsummaryrefslogtreecommitdiff
path: root/examples/animation/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'examples/animation/main.cpp')
-rw-r--r--examples/animation/main.cpp102
1 files changed, 102 insertions, 0 deletions
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 <iostream>
+
+#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<Sprite*> 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