63 lines
1.6 KiB
C++
63 lines
1.6 KiB
C++
#include <iostream>
|
|
#include <Ogre.h>
|
|
#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<EngineData>().add(flecs::Singleton);
|
|
ecs.component<GameData>().add(flecs::Singleton);
|
|
ecs.component<Input>().add(flecs::Singleton);
|
|
ecs.component<Camera>().add(flecs::Singleton);
|
|
ecs.component<InWater>();
|
|
ecs.component<App>().add(flecs::Singleton);
|
|
ecs.import <WaterModule>();
|
|
ecs.import <CharacterModule>();
|
|
ecs.import <SunModule>();
|
|
ecs.import <TerrainModule>();
|
|
ecs.import <GUIModule>();
|
|
ecs.system<EngineData>("UpdateDelta")
|
|
.kind(flecs::OnUpdate)
|
|
.each([](EngineData &eng) {
|
|
eng.delta = ECS::get().delta_time();
|
|
});
|
|
ecs.set<EngineData>({ scnMgr, world, 0.0f, 0.0f });
|
|
ecs.set<Camera>({ cameraNode, camera, false });
|
|
ecs.add<GameData>();
|
|
ecs.add<Input>();
|
|
ecs.set<WaterSurface>({ nullptr, nullptr, nullptr, nullptr, nullptr });
|
|
ecs.set<WaterBody>({ nullptr });
|
|
ecs.set<Terrain>({ 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);
|
|
}
|
|
} |