#ifndef MOJEOKNOGL_H
#define MOJEOKNOGL_H

#include "OknoGL.h"
#include "Wektor.h"
#include "PunktMaterialny.h"

#include "UkladyPunktowMaterialnych.h"

#include <typeinfo>

class CMojeOknoGL : public COknoGL
{
	private: 
		void RysujAktorow();		
	//zrodla swiatla
	private:
		void ZrodlaSwiatla();
		void MlecznaZarowka(float jasnosc);
		void ZoltaIZielonaMleczneZarowki();
		void Reflektor(float jasnoscRozblysk=1.0f,float jasnoscRozproszone=0.3f);
	//teksturowanie
	private:
		unsigned int indeksTekstury[3];
		void PrzygotujTekstury();
	public:
		CMojeOknoGL();
		~CMojeOknoGL();
	private:		
		//ZPM
		ZbiorPunktowMaterialnych* zpm;
		bool przesunDoSrodkaMasy;
		void RysujZPM(ZbiorPunktowMaterialnych* zpm,const double jednostkaDlugosci,bool koloruj) const;		
		void RysujWektor(Wektor punktPrzylozenia,Wektor wektor) const;
		void RysujZPMPredkosci(ZbiorPunktowMaterialnych* zpm,const double jednostkaDlugosci,const float gruboscLinii,bool koloruj) const;
		void RysujZPMLinie(ZbiorPunktowMaterialnych* zpm,const double jednostkaDlugosci,const float gruboscLinii,bool koloruj,bool cien,float poziomPodloza) const;
		void RysujZPMSiatke(Siatka* zpm,const double jednostkaDlugosci,const float gruboscLinii,bool koloruj) const;
		void RysujZPMPlaszczyzne(Siatka* zpm,const double jednostkaDlugosci,bool koloruj) const;
		void RysujZPMSzescian(Szescian* zpm,const double jednostkaDlugosci,bool koloruj) const;		

		//timer animacji		
		LRESULT WndProc(HWND hWnd, UINT message, WPARAM wParam,LPARAM lParam);
		Algorytm algorytm;
		double krokCzasowy;
		int iloscKrokowWSerii;
		long poprzedniCzas;
		bool pauza;
		bool typRzutowania; //false=perspektywa,true=izometryczne

	private:
		//sterowanie punktem
		int indeksWybranegoPunktu;
		int WyborPunktu(POINT pozycjaKursoraMyszy);
		void RysujZaznaczonyPunkt(ZbiorPunktowMaterialnych* zpm,const double jednostkaDlugosci,
                                      const double wielkoscPunktuWJednostkachDlugosci,
                                      int indeksWskazanegoPunktu,bool uzywajSiatki) const;
		bool trybPrzeciaganiaPunktu;
		Wektor punktZaczepieniaSprezyny;
} okno;

COknoGL* p_okno=&okno;

#endif