aboutsummaryrefslogtreecommitdiff
path: root/examples/particle_system/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'examples/particle_system/main.cpp')
-rw-r--r--examples/particle_system/main.cpp186
1 files changed, 0 insertions, 186 deletions
diff --git a/examples/particle_system/main.cpp b/examples/particle_system/main.cpp
deleted file mode 100644
index 93efc82..0000000
--- a/examples/particle_system/main.cpp
+++ /dev/null
@@ -1,186 +0,0 @@
-#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::Filesystem;
-using namespace JinEngine::Time;
-
-ParticleSystem* p;
-Timer timer;
-Timer::Handler* hnd;
-Shader* shader;
-Texture* tex;
-Sprite* spr;
-Texture* tex1;
-Sprite* spr1;
-Texture* tex2;
-Sprite* spr2;
-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;
-Texture* textures[10];
-Sprite* sprites[10];
-void onLoad()
-{
- for (int i = 0; i < 10; ++i)
- {
- string name = string("dust/s_dust_A_") + std::to_string(i) + ".png";
- textures[i] = new Texture(name.c_str());
- sprites[i] = new Sprite(textures[i], Origin::MIDDLECENTER);
- }
- tex = new Texture("particle.png");
- spr = new Sprite(tex, Origin::MIDDLECENTER);
- tex1 = new Texture("texture.png");
- spr1 = new Sprite(tex1, Origin::MIDDLECENTER);
- tex2 = new Texture("splash.png");
- spr2 = new Sprite(tex2, Origin::MIDDLECENTER);
- shader = new Shader(shader_code);
-/*
- ParticleSystemDef def;
- def.maxParticleCount = 30;
-
- def.emitterDef.emitRateDef.rate.rate = 0.01f;
-
- def.emitterDef.forceDef.enableRandom = true;
- def.emitterDef.forceDef.force.random.floor = 80;
- def.emitterDef.forceDef.force.random.ceil = 150;
-
- def.emitterDef.positionDef.enableRandom = true;
- def.emitterDef.positionDef.position.random.floor = Vector2<float>(-2, -2);
- def.emitterDef.positionDef.position.random.ceil = Vector2<float>(2, 2);
-
- def.emitterDef.directionDef.enableRandom = true;
- def.emitterDef.directionDef.direction.random.floor = -Pi / 8 - Pi / 2 ;
- def.emitterDef.directionDef.direction.random.ceil = Pi / 8 - Pi / 2 ;
-
- def.particleDef.linearAccelarationDef.linearAccelaration = Vector2<float>(0, 10);
-
- def.particleDef.spritesDef.mode = SpriteMode::RANDOM;
- def.particleDef.spritesDef.sprites.push_back(spr);
- def.particleDef.spritesDef.sprites.push_back(spr1);
- //def.particleDef.spritesDef.sprites.push_back(spr2);
-
- def.particleDef.colorDef.color = Color(255, 40, 40, 255);
- def.particleDef.colorDef.overTime.enable = true;
- def.particleDef.colorDef.overTime.value.addColor(Color(255, 100, 0, 255), 0);
- //def.particleDef.colorDef.overTime.value.addColor(Color(255, 255, 0, 100), 0.3);
- def.particleDef.colorDef.overTime.value.addColor(Color(0, 255, 100, 255), 0.5);
- def.particleDef.colorDef.overTime.value.addColor(Color(255, 0, 0, 255), 1);
-
- def.particleDef.transparencyDef.overTime.enable = true;
- def.particleDef.transparencyDef.overTime.value.addPoint(0, 1);
- def.particleDef.transparencyDef.overTime.value.addPoint(0.6, 0);
-
- def.particleDef.blendDef.additive = true;
-
- def.particleDef.lifeTimeDef.enableRandom = true;
- def.particleDef.lifeTimeDef.life.random.floor = 0.5;
- def.particleDef.lifeTimeDef.life.random.ceil = 2;
-
- def.particleDef.scaleDef.overTime.enable = true;
- def.particleDef.scaleDef.overTime.value.addPoint(0, 1);
- def.particleDef.scaleDef.overTime.value.addPoint(1, 0.7);
-*/
- p = new ParticleSystem();
- p->setEmitRate(0.02);
- p->setEmitForce(80, 120);
- //p->setEmitPosition(Vector2<float>(-2, -2), Vector2<float>(2, 2));
- p->setEmitPosition(Vector2<float>());
- p->setEmitDirection(-Pi / 10 - Pi / 2, Pi / 10 - Pi / 2);
- p->setParticleLinearAccelaration(Vector2<float>(0, 10));
- p->setParticleSpritesMode(SpriteMode::ANIMATED);
- //p->addParticleSprites(2, spr, spr1, spr2);
- for (int i = 0; i < 10; ++i)
- p->addParticleSprite(sprites[i]);
- //p->addParticleColorPoint(Color(255, 100, 0, 255), 0);
- //p->addParticleColorPoint(Color(0, 255, 100, 255), 0.5);
- //p->addParticleColorPoint(Color(255, 0, 0, 255), 1);
- p->setParticleColor(Color(255, 30, 0, 255));
- p->addParticleTransparencyPoint(1, 0);
- p->addParticleTransparencyPoint(0, 0.5);
- p->enableParticleBlendAdditive(true);
- p->setParticleLife(0.5, 2);
- p->addParticleScalePoint(3, 0);
- p->addParticleScalePoint(0, 1);
- timer.every(3, [=](void*)->void {
- //p->setEmitForce()
- });
-}
-
-void onEvent(Event* e)
-{
- static Application* Application = Application::get();
- if (e->type == EventType::QUIT)
- Application->stop();
-}
-
-void onUpdate(int ms)
-{
- p->update(ms / 1000.f);
- timer.update(ms);
-}
-
-void onDraw()
-{
- gl.useShader(shader);
- Mouse* m = Mouse::get();
- int x, y;
- m->getState(&x, &y);
- p->setPosition(x, y);
- p->render();
- gl.unuseShader();
-}
-
-int main(int argc, char* argv[])
-{
- Application* app = Application::get();
- Application::Setting setting;
- setting.loader = onLoad;
- setting.eventHandler = onEvent;
- setting.updater = onUpdate;
- setting.drawer = onDraw;
- app->start(&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->start(&wndSetting);
- wnd->show();
-
- app->run();
-
- app->quit();
- wnd->quit();
-
- return 0;
-} \ No newline at end of file