/********************************************************************
	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 "Vec3.hpp"

class Entity;

class HitResult
{
public:
	// looks ass backwards, but what can you do about it
	enum eHitResultType
	{
		AABB,
		ENTITY,
		NONE,
	};

	enum eHitSide
	{
		NOHIT = -1,
		MINY  =  0,
		MAXY, // 1
		MINZ, // 2
		MAXZ, // 3
		MINX, // 4
		MAXX, // 5
	};

private:
	void _init();
public:
	HitResult() { _init(); }
	HitResult(Entity*);
	HitResult(int x, int y, int z, eHitSide hitSide, const Vec3&);
	bool isHit() const {
		return m_hitType != NONE;
	}

public:
	eHitResultType m_hitType;
	// block coords?
	int m_tileX;
	int m_tileY;
	int m_tileZ;

	eHitSide m_hitSide;

	// hit position
	Vec3 m_hitPos;
	
	Entity* m_pEnt;
	bool m_bUnk24;
};

