#include #include #include "GameData.h" #include "Components.h" #include "CharacterModule.h" #include "WaterModule.h" #include "TerrainModule.h" #include "SunModule.h" #include "GUIModule.h" namespace ECS { static flecs::world ecs; void setup(Ogre::SceneManager *scnMgr, Ogre::Bullet::DynamicsWorld *world, Ogre::SceneNode *cameraNode, Ogre::Camera *camera) { std::cout << "Setup GameData\n"; ecs.component().add(flecs::Singleton); ecs.component().add(flecs::Singleton); ecs.component().add(flecs::Singleton); ecs.component().add(flecs::Singleton); ecs.component(); ecs.component().add(flecs::Singleton); ecs.import (); ecs.import (); ecs.import (); ecs.import (); ecs.import (); ecs.system("UpdateDelta") .kind(flecs::OnUpdate) .each([](EngineData &eng) { eng.delta = ECS::get().delta_time(); }); ecs.set({ scnMgr, world, 0.0f, 0.0f }); ecs.set({ cameraNode, camera, false }); ecs.add(); ecs.add(); ecs.set({ nullptr, nullptr, nullptr, nullptr, nullptr }); ecs.set({ nullptr }); ecs.set({ nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, false, { 0, 0, 0 } }); std::cout << "Setup GameData done\n"; } void update(float delta) { ecs.progress(delta); } flecs::world get() { return ecs; } bool Vector3::zeroLength() const { float l = x * x + y * y + z * z; return (l < 1e-06 * 1e-06); } }