diff options
Diffstat (limited to 'examples/particle_system/main.cpp')
-rw-r--r-- | examples/particle_system/main.cpp | 186 |
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 |