/********************************************************************
	Minecraft: Pocket Edition - Decompilation Project
	Copyright (C) 2023 iProgramInCpp
	
	The following code is licensed under the BSD 1 clause license.
	SPDX-License-Identifier: BSD-1-Clause
 ********************************************************************/

#pragma once

#include "common/Utils.hpp"
#include "FrustumCuller.hpp"
#include "RenderList.hpp"
#include "Tesselator.hpp"

class Level;
class Entity;

class Chunk
{
public:
	Chunk(Level*, int, int, int, int, int, GLuint*);

	float distanceToSqr(const Entity*) const;
	float squishedDistanceToSqr(const Entity*) const;
	void reset();
	int getList(int idx);
	RenderChunk* getRenderChunk(int idx);
	int getAllLists(int* arr, int arr_idx, int idx);
	void cull(Culler* pCuller);
	void renderBB();
	bool isEmpty();
	void setDirty();
	void setPos(int x, int y, int z);
	void setClean();
	bool isDirty();
	void rebuild();
	void translateToPos();

public:
	static int updates;

public:
	Level* m_pLevel;
	Pos m_pos;
	int field_10;
	int field_14;
	int field_18;
	bool field_1C[2];
	Pos m_pos2;
	float field_2C;
	AABB m_aabb;
	int field_48;
	bool m_bVisible;
	bool field_4D;
	bool field_4E;
	int field_50;
	bool field_54;
	RenderChunk m_renderChunks[2];
	Tesselator* m_pTesselator;
	int field_8C;
	GLuint* field_90;
	bool field_94;
	bool m_bDirty;
};

