#pragma once

// Scena - Jest to podstawowy element organizujący hierarchię obiektów w grze.
// Z założenia, w danym momencie powinna istnieć tylko jedna scena.
// W sytuacji gdy scen może być więcej, dobrze jest utworzyć klasy dziedziczące po tej.
class CScene
{
public:
	
	CSkydome * Skydome; // Skydome - niebo.
	CTerrain * Terrain; // Teren - czyli w naszym przykładzie trawiasty quad.
	CPlayer Player; // Stan gracza.

	// Wszystkie obiekty na scenie, wektor na podstawie którego będzie można
	// po nich łatwo iterować, np. w celu ich narysowania.
	vector<CSceneObject *> * Objects;

	CScene(void); // Konstruktor.
	~CScene(void); // Destruktor.
	void Initialize(void); // Inicjalizacja (wywoływana raz).
	void Update(void); // Aktualizacja świata.
	void Render(void); // Rysowanie całej sceny.
	
	bool DrawCollisions; // Czy mają być rysowane kolizje (do debugowania, klawisz "K")?
	bool DrawNormals; // Czy mają być rysowane wektory normalne (do debugowania, klawisz "N")?
	vec3 LastCollisionPoint; // Pozycja ostatniej kolizji.
	bool MarkCollision; // Czy już zaistniała jakakolwiek kolizja warta narysowania?

};

