2021-11-15 20:58:13 -05:00
|
|
|
#ifndef WORLD_H__
|
|
|
|
#define WORLD_H__
|
|
|
|
#include "define.h"
|
|
|
|
#include "chunk.h"
|
|
|
|
#include "array2d.h"
|
|
|
|
#include "vector3.h"
|
|
|
|
#include "transformation.h"
|
|
|
|
|
|
|
|
class World {
|
|
|
|
public:
|
|
|
|
World();
|
|
|
|
~World();
|
|
|
|
|
|
|
|
Array2d<Chunk*>& GetChunks();
|
|
|
|
|
2021-11-15 21:39:50 -05:00
|
|
|
Chunk* ChunkAt(float x, float y, float z) const;
|
|
|
|
Chunk* ChunkAt(const Vector3f& pos) const;
|
2021-11-15 20:58:13 -05:00
|
|
|
|
2021-11-15 21:39:50 -05:00
|
|
|
|
|
|
|
BlockType BlockAt(float x, float y, float z, BlockType defaultBlockType = BTYPE_AIR) const;
|
|
|
|
BlockType BlockAt(const Vector3f& pos, BlockType defaultBlockType = BTYPE_AIR) const;
|
2021-11-15 20:58:13 -05:00
|
|
|
|
|
|
|
private:
|
|
|
|
Array2d<Chunk*> m_chunks = Array2d<Chunk*>(VIEW_DISTANCE, VIEW_DISTANCE);
|
|
|
|
|
|
|
|
int m_center[2] = {0, 0};
|
|
|
|
};
|
2021-11-15 21:39:50 -05:00
|
|
|
//
|
|
|
|
//template <class T>
|
|
|
|
//Chunk* World::ChunkAt(T x, T y, T z) const {
|
|
|
|
// int cx = (int)x / CHUNK_SIZE_X;
|
|
|
|
// int cz = (int)z / CHUNK_SIZE_Z;
|
|
|
|
//
|
|
|
|
// if (cx >= VIEW_DISTANCE || // L'array en ce moment est de VIEW_DISTANCE par VIEW_DISTANCE.
|
|
|
|
// cz >= VIEW_DISTANCE ||
|
|
|
|
// cx < 0 || cz < 0)
|
|
|
|
// return 0;
|
|
|
|
//
|
|
|
|
// return m_chunks.Get(cx, cz);
|
|
|
|
//}
|
|
|
|
//
|
|
|
|
//template <class T>
|
|
|
|
//Chunk* World::ChunkAt(const Vector3<T>& pos) const { return ChunkAt(pos.x, pos.y, pos.z); }
|
|
|
|
//
|
|
|
|
//template <class T>
|
|
|
|
//BlockType World::BlockAt(T x, T y, T z, BlockType defaultBlockType) const {
|
|
|
|
// Chunk* c = ChunkAt(x, y, z);
|
|
|
|
//
|
|
|
|
// if (!c)
|
|
|
|
// return defaultBlockType;
|
|
|
|
//
|
|
|
|
// int bx = (int)x % CHUNK_SIZE_X;
|
|
|
|
// int by = (int)y % CHUNK_SIZE_Y;
|
|
|
|
// int bz = (int)z % CHUNK_SIZE_Z;
|
|
|
|
//
|
|
|
|
// return c->GetBlock(bx, by, bz);
|
|
|
|
//}
|
|
|
|
//
|
|
|
|
//template <class T>
|
|
|
|
//BlockType World::BlockAt(const Vector3<T>& pos, BlockType defaultBlockType) const {
|
|
|
|
// return BlockAt(pos.x, pos.y, pos.z);
|
|
|
|
//}
|
|
|
|
|
2021-11-15 20:58:13 -05:00
|
|
|
#endif
|
|
|
|
|