/* Script ten behoeve van workshop 3 van Bsc4

De opdracht bestaat uit 4 delen

1. Zet op papier een stroomschema van het script waaruit blijkt hoe het script is opgezet.
2. Voorzie het script van duidelijk commentaar zodat zichtbaar is dat je het script begrijpt.
3. Voeg een extra invoerveld toe in de interface waar de hoogte van de stammen aangpast kan worden.
4. Na uitvoeren van het script komen er in de script editor 2 gegevens te voorschijn. Beide staan op 0.
   Zorg ervoor dat hier de juiste waarden komen te staan.
   
Voorzie de bestandsnaam van je studienummer, en zorg dat je studienummer in de interface te voorschijn komt.
   
Analyseer het script goed. Gebruik hiervoor de TOI-Pedia en de Command Reference van de Maya-help. Ook
in de Maya-help onder Using Maya > General > MEL and Expressions staat het een en ander. */




if ( `window -exists TOI_bsc4_scriptWindow` ) {
		deleteUI TOI_bsc4_scriptWindow;
}


global proc TOI_bsc4_script () {
 
	window -title "Bsc4 script van (studienummer)" -w 400 TOI_bsc4_scriptWindow;
	columnLayout -rs 6;


	intFieldGrp -label "Aantal straten" -cw2 80 160 toi_straten;
	intFieldGrp -label "Aantal huisjes" -cw2 80 160 toi_huisjes;
	setParent ..;
	
	separator -w 400;
	
	floatSliderGrp -label "Aantal bomen" -cw3 80 40 160 -field 1 -v 1 -pre 2 -min 0.5 -max 2.5 toi_aantalBomen;
	setParent ..;

	button -l "Create streets" -c "TOI_createStreet()";
	
	showWindow TOI_bsc4_scriptWindow;

}

global proc TOI_createStreet() {
	TOI_makeHouses();
	TOI_makeTrees();
	TOI_makeGround();
}

global proc TOI_makeHouses() {
	
	int $sizesHouse[] = {12,6,8};
	int $distHousesX = 20;
	int $distHousesZ = 40;
	int $hoeveel;
	
	int $straten = `intFieldGrp -q -v1 toi_straten`;
	int $huisjes = `intFieldGrp -q -v1 toi_huisjes`;
	
	for ($j = 0; $j < $straten; $j = ($j + 1)) {
		for ($i = 0; $i < $huisjes; $i = ($i + 1)) {
			string $houseCube[] = `polyCube -w $sizesHouse[0] -h $sizesHouse[1] -d $sizesHouse[2] -n "Huis_nr1"`;
		
			// de volgende 2 regels hoef je nog niet te weten, maar anders zagen de huisjes er een beetje suf uit
			polySubdivideFacet -duv 1 -dvv 2 -sbm 1 ($houseCube[0]+".f[1]");//hier voegen we een division toe aan de bovenste face van de cube
			move -r 0 3 0 ($houseCube[0]+".e[14]");//hier verplaatsen we de nieuw ontstane edge 3 units omhoog
		
		
			move -r ($i*$distHousesX) (0.5*$sizesHouse[1]) ($j*$distHousesZ) $houseCube[0];
		}
	}

	print ("Er zijn "+$hoeveel+" huisjes! ");

}

global proc TOI_makeTrees() {
	
	int $distHousesX = 20;
	int $distHousesZ = 40;
	int $hoeveelMeter;
	
	int $straten = `intFieldGrp -q -v1 toi_straten`;
	int $huisjes = `intFieldGrp -q -v1 toi_huisjes`;
	
	float $aantalBomen = `floatSliderGrp -q -v toi_aantalBomen`;
	
	float $hoogteStam = 6;
	float $hoogteKruin = 9;	
	
	for ($j = 0; $j < $straten; $j = ($j + 1)) {
		for ($i = 0; $i < ($aantalBomen * $huisjes); $i = ($i + 1)) {
			polyCylinder -r 0.25 -h $hoogteStam -sx 20 -sy 1 -sz 1 -ax 0 1 0;
			move -r (($i*$distHousesX/$aantalBomen)-(0.5*$distHousesX/$aantalBomen)) (0.5*$hoogteStam) (($j*$distHousesZ)-10);
			polySphere -r ($hoogteKruin/2) -sx 20 -sy 20 -ax 0 1 0;
			move -r (($i*$distHousesX/$aantalBomen)-(0.5*$distHousesX/$aantalBomen)) ($hoogteStam+(0.5*$hoogteKruin)) (($j*$distHousesZ)-10);
		}
	}
	
	print ("De afstand tussen de bomen is "+$hoeveelMeter+" meter! ");

}

global proc TOI_makeGround() {
	
	int $distHousesX = 20;
	int $distHousesZ = 40;
	
	int $straten = `intFieldGrp -q -v1 toi_straten`;
	int $huisjes = `intFieldGrp -q -v1 toi_huisjes`;
	
	polyPlane -w (($huisjes*$distHousesX)+10) -h (($straten*$distHousesZ)+10) -sx 1 -sy 1 -ax 0 1 0;
	move -r ((0.5*$huisjes*$distHousesX)-(0.5*$distHousesX)) 0 ((0.5*$straten*$distHousesZ)-(0.5*$distHousesZ));

}

