diff options
author | chai <chaifix@163.com> | 2018-11-05 07:33:41 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2018-11-05 07:33:41 +0800 |
commit | 1d1210d7932b287d66e27157701b92df764528cb (patch) | |
tree | 0f6ff1178abb3eec2976cfdee80e201283d949b5 /examples/particle_system/main.cpp | |
parent | 91641bccdf744e0dc29f015fbffc64be46d2ad2c (diff) |
+状态机测试代码
Diffstat (limited to 'examples/particle_system/main.cpp')
-rw-r--r-- | examples/particle_system/main.cpp | 51 |
1 files changed, 43 insertions, 8 deletions
diff --git a/examples/particle_system/main.cpp b/examples/particle_system/main.cpp index 1477a20..0b7e191 100644 --- a/examples/particle_system/main.cpp +++ b/examples/particle_system/main.cpp @@ -1,24 +1,55 @@ -#include "jin.h" +#include <iostream> +#include "libjin/jin.h" + +using namespace std; using namespace JinEngine::AI; using namespace JinEngine::Game; using namespace JinEngine::Input; using namespace JinEngine::Graphics; using namespace JinEngine::Graphics::Particles; +using namespace JinEngine::Filesystem; +using namespace JinEngine::Time; ParticleSystem* p; - +StateMachine sm; +Timer timer; +Timer::Handler* hnd; void onLoad() { - StateMachine sm; sm.addState("Run"); sm.addState("Idle"); sm.addState("Sleep"); sm.addState("Jump"); - sm.addParameteri("run"); - sm.addParameteri("idle"); - sm.addTransitioni("Empty", "Idle", "run", 1); - sm.addTransitioni("Run", "Idle", "run", 1); + sm.addParametert("run"); + sm.addParameterb("idle"); + /*sm.addTransitionb("Empty", "Idle", "run", StateMachine::BOOL_IS, true); + sm.addTransitionb("Idle", "Run", "run", StateMachine::BOOL_IS, false); + */ + sm.addTransitiont("Empty", "Idle", "run"); + sm.addTransitiont("Idle", "Run", "run"); + sm.setEnterListener([](const string& state, void* p) { + cout << "Enter: " << state << endl; + }); + sm.addEnterListener("Run", [](void* p) { + cout << "A Run state enter callback" << endl; + }); + sm.addTranslateListener("Idle", "Run", [](void* p) { + cout << "From Idle to Run" << endl; + }); + Window::get()->show(); + hnd = timer.every(500, [](void*) { + cout << sm.getCurrentState() << endl; + }, NULL); + timer.after(2500, [](void*) { + //sm.setParameterb("run", true); + sm.setParametert("run"); + //timer.cancel(hnd); + }, NULL); + timer.after(5000, [](void*) { + sm.setParametert("run"); + //sm.setParameterb("run", false); + }, NULL); } void onEvent(Event* e) @@ -30,11 +61,12 @@ void onEvent(Event* e) void onUpdate(int ms) { + timer.update(ms); + sm.update(); } void onDraw() { - } int main(int argc, char* argv[]) @@ -47,6 +79,8 @@ int main(int argc, char* argv[]) setting.drawer = onDraw; Application->init(&setting); + AssetDatabase::get()->mount("."); + Window* wnd = Window::get(); Window::Setting wndSetting; wndSetting.width = 600; @@ -56,6 +90,7 @@ int main(int argc, char* argv[]) wndSetting.vsync = false; wndSetting.fullscreen = false; wndSetting.resizable = false; + wndSetting.icon = "."; wnd->init(&wndSetting); Application->run(); |