58 lines
1.6 KiB
C++
58 lines
1.6 KiB
C++
#ifndef TERRAIN_MODULE_H_
|
|
#define TERRAIN_MODULE_H
|
|
#include <flecs.h>
|
|
namespace Ogre
|
|
{
|
|
class TerrainGlobalOptions;
|
|
class TerrainGroup;
|
|
class TerrainPaging;
|
|
class PageManager;
|
|
class PagedWorld;
|
|
class TerrainPagedWorldSection;
|
|
}
|
|
namespace ECS
|
|
{
|
|
struct Terrain {
|
|
Ogre::TerrainGlobalOptions *mTerrainGlobals;
|
|
Ogre::TerrainGroup *mTerrainGroup;
|
|
Ogre::TerrainPaging *mTerrainPaging;
|
|
Ogre::PageManager *mPageManager;
|
|
Ogre::PagedWorld *mPagedWorld;
|
|
Ogre::TerrainPagedWorldSection *mTerrainPagedWorldSection;
|
|
bool mTerrainReady;
|
|
|
|
Ogre::Vector3 mTerrainPos;
|
|
};
|
|
struct PlacementObjects {
|
|
struct item {
|
|
Ogre::String entity;
|
|
Ogre::Quaternion rotation;
|
|
Ogre::Vector3 position;
|
|
};
|
|
std::vector<struct item> altar_items;
|
|
};
|
|
struct TerrainModule {
|
|
TerrainModule(flecs::world &ecs);
|
|
static float get_height(Ogre::TerrainGroup *group,
|
|
const Ogre::Vector3 &position);
|
|
static float get_world_x(int x);
|
|
static float get_world_y(int y);
|
|
static int get_img_x(float world_x);
|
|
static int get_img_y(float world_z);
|
|
static void update_heightmap(const Ogre::Image &heightmap);
|
|
static void save_heightmap();
|
|
static flecs::entity createItem(const Ogre::Vector3 &position,
|
|
const Ogre::Quaternion &orientation,
|
|
const Ogre::String &type);
|
|
static void setItemProperties(flecs::entity id,
|
|
Ogre::String properties);
|
|
static const Ogre::String &getItemProperties(flecs::entity id);
|
|
static void saveItems();
|
|
static void loadItems();
|
|
static void getItemPositionPerSlot(long x, long y,
|
|
std::list<Ogre::Vector3> *positions);
|
|
static void getItemPositions(std::list<Ogre::Vector3> *positions);
|
|
};
|
|
struct TerrainReady {};
|
|
}
|
|
#endif |