#pragma once

class CSceneObject;

// Wielokąt służący do wykrywania kolizji oraz metody do tego przydatne.
class CCollisionPolygon {
public:

	vec3 * v; // Tablica wierzchołków polygonu.
	int vNum; // Liczba wierzchołków.

	CSceneObject * parent; // Element sceny, do którego przynależy polygon.

	// Konstruktor - utworzenie polygonu na podstawie tablicy wierzchołków.
	// Wszystkie wierzchołki muszą leżeć na jednej płaszczyźnie!
	CCollisionPolygon(vec3 nV[], int nVNum) {
		parent = NULL;
		vNum = nVNum;
		v = new vec3[vNum];
		for (int i = 0; i < vNum; ++i) {
			v[i] = nV[i];
		}
	}
	
	// Destruktor - sprzątanie świata.
	~CCollisionPolygon() {
		delete[] v;
	}

	// Sprawdzenie, czy na odcinku pos0 => pos1 dochodzi do kolizji elipsoidy e z naszym polygonem.
	void CheckCollision(vec3 pos0, vec3 pos1, CCollisionEllipsoid * e, SCollision &result);

	// Sprawdzenie, czy punkt p leży wewnątrz naszego polygonu.
	bool CheckPointInPolygon(vec3 p, vec3 *vv);

};
