#ifndef CHUNK_H__ #define CHUNK_H__ #include "define.h" #include "array3d.h" #include "array2d.h" #include "vertexbuffer.h" #include "blockinfo.h" #include "perlin.h" #include "opensimplex.h" class World; class Chunk { private: Array3d m_blocks = Array3d(CHUNK_SIZE_X, CHUNK_SIZE_Y, CHUNK_SIZE_Z); VertexBuffer m_vertexBuffer; bool m_isDirty = true; bool m_isModified = false; unsigned int m_posX; // Position du chunk dans l'array constituant le monde. unsigned int m_posY; VertexBuffer::VertexData* m_vd; int m_vcount; void AddBlockToMesh(VertexBuffer::VertexData* vd, int& count, BlockType bt, int x, int y, int z, float u, float v, float s, World* world); public: Chunk(unsigned int x, unsigned int y); ~Chunk(); void RemoveBlock(int x, int y, int z, World* world); void SetBlock(int x, int y, int z, BlockType type, World* world); BlockType GetBlock(int x, int y, int z); void CheckNeighbors(unsigned int x, unsigned int z, World* world); void GetPosition(unsigned int& x, unsigned int& y) const; void Update(BlockInfo* blockinfo[BTYPE_LAST], World* world); void FlushMeshToVBO(); void FlushVBO(); void Render() const; bool IsDirty() const; void MakeDirty(); void MakeModified(); }; #endif // CHUNK_H__