Zapis tekstowy zasobu
================================================================================

QMap "NAZWA" [STAN] "NAZWA-PLIKU" ;


Edycja mapy w Blender
================================================================================

wiata
--------------------------------------------------------------------------------

Akceptowane s rodzaje wiate: Lamp, Spot. Pozostae s ignorowane i generuj
ostrzeenie.

Respektowane s nastpujce parametry wiate:
- Pozycja, orientacja i rozmiar jako obiektu
- Kolor (R,G,B)
- Zasig (Dist)
Dla wiate Spot dodatkowo:
- Kt (SpotSi)
- Mikko (SpotBl)

Pozostae parametry s ignorowane. W szczeglnoci nie s respektowane:
- Ustawienia cieni (RayShadow, BufShadow)
  Nie mog si do nich dosta ze skryptu eksportujcego!
- Energy
- Quad/Sphere
- Gamma
- Square/Rect


Format .qmap.tmp
================================================================================

Format poredni eksportu map Indoor z Blendera.
Plik tekstowy. Kodowanie ANSI. Koniec wiersza dowolny.
Tokeny jak w module Tokenizer z CommonLib.

Skadnia:

QMAP TMP 10
objects {
	obiekt
	obiekt
	...
}

Rodzaje obiektw: mesh, lamp, lattice

- Kolejno obiektw jest dowolna.
- Obiektw typu mesh, lamp i lattice moe pojawi si dowolna ilo.

Wsplne pola:

- Pozycja_obiektu - pozycja rodka danego obiektu:
  <x>,<y>,<z>
- Orientacja_obiektu - kty Eulera:
  <x>,<y>,<z>
- Rozmiar_obiektu - wspczynniki skalowania:
  <x>,<y>,<z>


Obiekt typu mesh
--------------------------------------------------------------------------------

mesh <Nazwa_obiektu(string)> {
	<Pozycja_obiektu>
	<Orientacja_obiektu>
	<Rozmiar_obiektu>
	<Auto_smooth_angle(float)>
	<Czy_s_wsp_tekstury(0|1)>
	materials <Liczba_materiaw> {
		<Nazwa_materiau>
		<Nazwa_materiau>
		...
	}
	vertices <Liczba_wierzchokw> {
		<Pozycja_wierzchoka>
		<Pozycja_wierzchoka>
		...
	}
	faces <Liczba_cianek> {
		<Liczba_wierzchokw> <Nr_materiau> <Czy_smooth> <Indeks_wierzchoka> [Wsp_tekstury] <Indeks_wierzchoka> [Wsp_tekstury] ...
		<Liczba_wierzchokw> <Nr_materiau> <Czy_smooth> <Indeks_wierzchoka> [Wsp_tekstury] <Indeks_wierzchoka> [Wsp_tekstury] ...
		...
	}
}

Gdzie:
- Nazwa_materiau - (acuch)
- Pozycja_wierzchoka:
  <x>,<y>,<z>
- Indeks_wierzchoka (uint) - odnosi si do tablicy wierzchokw, zawsze w odpowiednim zakresie
- Wsp_tekstury:
  <x>,<y>
- Nr_materiau:
  Liczba cakowita bez znaku, 0..15
  Moe wykracza poza rozmiar listy materiaw.
- Czy_smooth: 0 lub 1

Materiaw jest midzy 0..16.
Wierzchokw w cianie jest midzy 3..4.


Obiekt typu lamp
--------------------------------------------------------------------------------

lamp <Nazwa_obiektu(string)> {
	<Pozycja_obiektu>
	<Orientacja_obiektu>
	<Rozmiar_obiektu>
	<Typ(identifikator)>
	<Dane>
}

- Typ: Lamp, Spot
- Dane: zalenie od typu.

Dane dla typu Lamp:

<Zasig(float)>
<R(float)>, <G(float)>, <B(float)>

Dane dla typu Spot:

<Zasig(float)>
<R(float)>, <G(float)>, <B(float)>
<Softness(float)>
<Angle(float)>

Gdzie:
- Zasig : float - zasig w jednostkach
  Chyba podlega skalowaniu przez skalowanie obiektu.
- R, G, B : float - kolor (0..1)
- Softness : float - mikko wiata rzucanego przez Spot (0..1)
  0 oznacza najtwardsze, 1 najmiksze
- Angle : float - kt padania wiata spot w stopniach (1..180)


Format .qmap
================================================================================

Rozszerzenie .qmap
Oficjalna nazwa: The Final Quest Map 1.0
Plik binarny.
Endianowo jak w pecetach.
Znaki zapisywane w kodowaniu Windows-1250.

Plik:
- Format: "TFQMAP" (6 * char)
- Wersja: "10" (2 * char)
- MaterialCount : uint4
  Liczba materiaw
- Materials - Materiay
- DrawVB - Bufor wierzchokw rysowania
- DrawIB - Bufor indeksw rysowania
- DrawTree - Drzewo Octree rysowania
- CollisionVB - Bufor wierzchokw kolizji
- CollisionIB - Bufor indeksw kolizji
- CollisionTree - Drzewo Octree kolizji

Materiay:
Kady z nich to nazwa zoona z 1B dugo i dalej znakw.

DrawVB:
- VertexCount : uint4
  Liczba wierzchokw
- Wierzchoki, a kady:
  - Pos : float[3]
  - Normal : float[3]
  - Tex : float[2]
  - Tangent : float[3]
  - Binormal : float[3]

DrawIB:
- Liczba indeksw : uint4
- Indeksy, a kady to liczba uint4 indeksujca bufor wierzchokw rysowania.

DrawTree:
To struktura hierarchiczna. Jest jeden wze gwny. Kady wze moe mie swoje
podwzy.
Node - Wze:
- AABB : float[6]
  Pozycje minimalna i maksymalna wyznaczajce AABB wza
- HasSubNodes : bool (1B, warto 0 lub 1)
  1 jeli posiada podwzy
- Podwzy (8)
- Liczba fragmentw : uint4
- Fragmenty, a kady:
  - MaterialIndex : uint4
  - IndexBegin : uint4
  - IndexEnd : uint4
  - VertexBegin : uint4
  - VertexEnd : uint4

CollisionVB:
- VertexCount : uint4
  Liczba wierzchokw
- Wierzchoki, a kady posiada tylko pozycj Pos : float3

CollisionIB:
- Liczba indeksw : uint4
- Indeksy, a kady to liczba uint4 indeksujca bufor wierzchokw rysowania.

CollisionTree:
To struktura hierarchiczna. Kady wze moe mie swoje podwzy.
Node - Wze:
- AABB : float[6]
  Pozycje minimalna i maksymalna wyznaczajce AABB wza
- HasSubNodes : bool (1B, warto 0 lub 1)
  1 jeli posiada podwzy
- Podwzy (8)
- Fragment
  Wyznacza geometri robic kolizje.
  - IndexBegin : uint4
  - IndexEnd : uint4


Format QMAP.DESC
================================================================================

Format pomocniczy do opisywania danych podczas kompilacji mapy z formatu
QMAP.TMP do formatu QMAP. Plik tekstowy. Kodowanie Windows-1250. Koniec wiersza
dowolny (zaleacny CR+LF). Rozszerzenie zaleacne: ".qmap.desc". Format zgodny
z moduem Tokenizer.

Nagwek tworzy linijka:

QMAP DESC 10

Dalej jest sekcja:

materials {
	"NazwaMateriau" {
		<DaneMateriau>
	}
}

Gdzie NazwaMateriau to nazwa rdowa materiau, tak jak wystpuje w pliku
QMAP.TMP.

Nie kady materia musi by tu udokumentowany.

Dopuszczalne dane materiau, wszystkie opcjonalne, s nastpujce:

tex gen ;
  Automatyczne generowanie wsp. tekstury, nawet jeli w siatce rdowej wystpuj
tex scale <Liczba:float> ;
  Skalowanie wsprzdnych tekstury.
name "NowaNazwa";
  Zmiana nazwy materiau.
drop;
  Porzucenie geometrii rysowanej tym materiaem.
