//-----------------------------------------------------------------
// Outside sky
//-----------------------------------------------------------------

// stone floor
function makedowntown(px,py,pz,ax,ay,az) {
	let obj = ObjPrim_Create(OBJ_SPRITE_3D);
	ObjPrim_SetTexture(obj,town);
	Obj_SetRenderPriorityI(obj,20);
	ObjRender_SetColor(obj,128,128,128);
	ObjRender_SetAngleXYZ(obj,ax,ay,az);
	ObjRender_SetScaleXYZ(obj,0.5,0.5,0);
	ObjRender_SetPosition(obj,px,py,pz);
	ObjRender_SetAlpha(obj,0);	
	
	ObjSprite3D_SetSourceDestRect(obj,0,0,1024,2048);
	ObjSprite3D_SetBillboard(obj,false);
	ObjRender_SetZWrite(obj,true);
	
	updateDownTown(obj);

	stageNonMoveObj = stageNonMoveObj ~ [obj];
}

// stone floor
function makedowntownfog(px,py,pz,ax,ay,az,type) {
	let obj = ObjPrim_Create(OBJ_SPRITE_3D);
	ObjPrim_SetTexture(obj,wolkvloer);
	Obj_SetRenderPriorityI(obj,20);
	ObjRender_SetColor(obj,128,128,128);
	ObjRender_SetAngleXYZ(obj,ax,ay,az);
	ObjRender_SetScaleXYZ(obj,1,1,0);
	ObjRender_SetPosition(obj,px,py,pz);
	ObjRender_SetBlendType(obj,BLEND_ADD_ARGB);
	ObjRender_SetAlpha(obj,255);	
		
	ObjSprite3D_SetSourceDestRect(obj,0,0,1024,1024);
	ObjSprite3D_SetBillboard(obj,false);
	ObjRender_SetZWrite(obj,true);
	
	updateDownTownfog(obj,type);
	
	stageNonMoveObj = stageNonMoveObj ~ [obj];
}


//-----------------------------------------------------------------
// Outside city flight
//-----------------------------------------------------------------

// stone floor
function makestraat(px,py,pz,ax,ay,az,texture) {
	let obj = ObjPrim_Create(OBJ_SPRITE_3D);
	ObjPrim_SetTexture(obj,texture);
	Obj_SetRenderPriorityI(obj,20);
	ObjRender_SetColor(obj,255,255,255);
	ObjRender_SetAngleXYZ(obj,ax,ay,az);
	ObjRender_SetScaleXYZ(obj,4.05,4,0);
	ObjRender_SetPosition(obj,px,py,pz);
	
	ObjSprite3D_SetSourceDestRect(obj,0,0,512,1024);
	ObjSprite3D_SetBillboard(obj,false);
	ObjRender_SetZWrite(obj,true);

	stageSpriteObj = stageSpriteObj ~ [obj];
	stageSpriteZpos = stageSpriteZpos ~ [ObjRender_GetZ(obj)];	
}

// stone floor
function makekruis(px,py,pz,ax,ay,az) {
	let obj = ObjPrim_Create(OBJ_SPRITE_3D);
	ObjPrim_SetTexture(obj,kruis);
	Obj_SetRenderPriorityI(obj,20);
	ObjRender_SetColor(obj,255,255,255);
	ObjRender_SetAngleXYZ(obj,ax,ay,az);
	ObjRender_SetScaleXYZ(obj,4.05,4.05,0);
	ObjRender_SetPosition(obj,px,py,pz);
	
	ObjSprite3D_SetSourceDestRect(obj,0,0,512,512);
	ObjSprite3D_SetBillboard(obj,false);
	ObjRender_SetZWrite(obj,true);

	stageSpriteObj = stageSpriteObj ~ [obj];
	stageSpriteZpos = stageSpriteZpos ~ [ObjRender_GetZ(obj)];	
}

// Building skyscraper
function makeflat(px,py,pz,ax,ay,az) {

	// wall left
	let obj = ObjPrim_Create(OBJ_SPRITE_3D);
	ObjPrim_SetTexture(obj,flatmuur2);
	Obj_SetRenderPriorityI(obj,20);
	ObjRender_SetColor(obj,90,90,90);
	ObjRender_SetAngleXYZ(obj,ax,ay,az);
	ObjRender_SetScaleXYZ(obj,2,2,0);
	ObjRender_SetPosition(obj,px,py,pz);
	
	ObjSprite3D_SetSourceDestRect(obj,0,0,1024,512);
	ObjSprite3D_SetBillboard(obj,false);
	ObjRender_SetZWrite(obj,true);
	
	stageSpriteObj = stageSpriteObj ~ [obj];
	stageSpriteZpos = stageSpriteZpos ~ [ObjRender_GetZ(obj)];	

	// wall right
	let obj2 = ObjPrim_Create(OBJ_SPRITE_3D);
	ObjPrim_SetTexture(obj2,flatmuur2);
	Obj_SetRenderPriorityI(obj2,20);
	ObjRender_SetColor(obj,90,90,90);
	ObjRender_SetAngleXYZ(obj2,ax,ay,az);
	ObjRender_SetScaleXYZ(obj2,2,2,0);
	ObjRender_SetPosition(obj2,px-1024,py,pz);
	
	ObjSprite3D_SetSourceDestRect(obj2,0,0,1024,512);
	ObjSprite3D_SetBillboard(obj2,false);
	ObjRender_SetZWrite(obj2,true);

	stageSpriteObj = stageSpriteObj ~ [obj2];
	stageSpriteZpos = stageSpriteZpos ~ [ObjRender_GetZ(obj2)];		

	// wall front
	let obj3 = ObjPrim_Create(OBJ_SPRITE_3D);
	ObjPrim_SetTexture(obj3,flatmuur2);
	Obj_SetRenderPriorityI(obj3,20);
	ObjRender_SetColor(obj,90,90,90);
	ObjRender_SetAngleXYZ(obj3,ax,ay-90,az);
	ObjRender_SetScaleXYZ(obj3,2,2,0);
	ObjRender_SetPosition(obj3,px-512,py,pz+1024);
	
	ObjSprite3D_SetSourceDestRect(obj3,0,0,512,512);
	ObjSprite3D_SetBillboard(obj3,false);
	ObjRender_SetZWrite(obj3,true);

	stageSpriteObj = stageSpriteObj ~ [obj3];
	stageSpriteZpos = stageSpriteZpos ~ [ObjRender_GetZ(obj3)];	
	
	// window left
	let obj4 = ObjPrim_Create(OBJ_SPRITE_3D);
	ObjPrim_SetTexture(obj4,flatraam);
	Obj_SetRenderPriorityI(obj4,20);
	ObjRender_SetColor(obj4,255,255,255);
	ObjRender_SetAngleXYZ(obj4,ax,ay,az);
	ObjRender_SetScaleXYZ(obj4,8,8,0);
	ObjRender_SetPosition(obj4,px,py+2560,pz);
	
	ObjSprite3D_SetSourceDestRect(obj4,0,0,256,512);
	ObjSprite3D_SetBillboard(obj4,false);
	ObjRender_SetZWrite(obj4,true);

	stageSpriteObj = stageSpriteObj ~ [obj4];
	stageSpriteZpos = stageSpriteZpos ~ [ObjRender_GetZ(obj4)];	

	// window right
	let obj5 = ObjPrim_Create(OBJ_SPRITE_3D);
	ObjPrim_SetTexture(obj5,flatraam);
	Obj_SetRenderPriorityI(obj5,20);
	ObjRender_SetColor(obj5,255,255,255);
	ObjRender_SetAngleXYZ(obj5,ax,ay,az);
	ObjRender_SetScaleXYZ(obj5,8,8,0);
	ObjRender_SetPosition(obj5,px-1024,py+2560,pz);
	
	ObjSprite3D_SetSourceDestRect(obj5,0,0,256,512);
	ObjSprite3D_SetBillboard(obj5,false);
	ObjRender_SetZWrite(obj5,true);

	stageSpriteObj = stageSpriteObj ~ [obj5];
	stageSpriteZpos = stageSpriteZpos ~ [ObjRender_GetZ(obj5)];	

	// window front
	let obj6 = ObjPrim_Create(OBJ_SPRITE_3D);
	ObjPrim_SetTexture(obj6,flatraam);
	Obj_SetRenderPriorityI(obj6,20);
	ObjRender_SetColor(obj6,255,255,255);
	ObjRender_SetAngleXYZ(obj6,ax,ay-90,az);
	ObjRender_SetScaleXYZ(obj6,8,8,0);
	ObjRender_SetPosition(obj6,px-512,py+2560,pz+1024);
	
	ObjSprite3D_SetSourceDestRect(obj6,0,0,128,512);
	ObjSprite3D_SetBillboard(obj6,false);
	ObjRender_SetZWrite(obj6,true);

	stageSpriteObj = stageSpriteObj ~ [obj6];
	stageSpriteZpos = stageSpriteZpos ~ [ObjRender_GetZ(obj6)];	
	
	// window back
	let obj7 = ObjPrim_Create(OBJ_SPRITE_3D);
	ObjPrim_SetTexture(obj7,flatraam);
	Obj_SetRenderPriorityI(obj7,20);
	ObjRender_SetColor(obj7,255,255,255);
	ObjRender_SetAngleXYZ(obj7,ax,ay-90,az);
	ObjRender_SetScaleXYZ(obj7,8,8,0);
	ObjRender_SetPosition(obj7,px-512,py+2560,pz-1024);
	
	ObjSprite3D_SetSourceDestRect(obj7,0,0,128,512);
	ObjSprite3D_SetBillboard(obj7,false);
	ObjRender_SetZWrite(obj7,true);

	stageSpriteObj = stageSpriteObj ~ [obj7];
	stageSpriteZpos = stageSpriteZpos ~ [ObjRender_GetZ(obj7)];		
	
	// roof
	let obj8 = ObjPrim_Create(OBJ_SPRITE_3D);
	ObjPrim_SetTexture(obj8,beton);
	Obj_SetRenderPriorityI(obj8,20);
	ObjRender_SetColor(obj8,96,96,96);
	ObjRender_SetAngleXYZ(obj8,90,0,0);
	ObjRender_SetScaleXYZ(obj8,4,8,0);
	ObjRender_SetPosition(obj8,px-512,py+4480,pz);
	
	ObjSprite3D_SetSourceDestRect(obj8,0,0,248,248);
	ObjSprite3D_SetBillboard(obj8,false);
	ObjRender_SetZWrite(obj8,true);

	stageSpriteObj = stageSpriteObj ~ [obj8];
	stageSpriteZpos = stageSpriteZpos ~ [ObjRender_GetZ(obj8)];		
}

// building apartment
function makeapart(px,py,pz,ax,ay,az) {

	// roof
	let obj = ObjPrim_Create(OBJ_SPRITE_3D);
	ObjPrim_SetTexture(obj,apartmuurb);
	Obj_SetRenderPriorityI(obj,20);
	ObjRender_SetColor(obj,90,90,90);
	ObjRender_SetAngleXYZ(obj,ax,ay,az);
	ObjRender_SetScaleXYZ(obj,2,2,0);
	ObjRender_SetPosition(obj,px,py+2624,pz);
	
	ObjSprite3D_SetSourceDestRect(obj,0,448,2048,512);
	ObjSprite3D_SetBillboard(obj,false);
	ObjRender_SetZWrite(obj,true);

	stageSpriteObj = stageSpriteObj ~ [obj];
	stageSpriteZpos = stageSpriteZpos ~ [ObjRender_GetZ(obj)];		
	
	let obj2 = ObjPrim_Create(OBJ_SPRITE_3D);
	ObjPrim_SetTexture(obj2,apartmuurb);
	Obj_SetRenderPriorityI(obj2,20);
	ObjRender_SetColor(obj2,90,90,90);
	ObjRender_SetAngleXYZ(obj2,ax,ay,az);
	ObjRender_SetScaleXYZ(obj2,2,2,0);
	ObjRender_SetPosition(obj2,px-1024,py+2624,pz);
	
	ObjSprite3D_SetSourceDestRect(obj2,0,448,2048,512);
	ObjSprite3D_SetBillboard(obj2,false);
	ObjRender_SetZWrite(obj2,true);

	stageSpriteObj = stageSpriteObj ~ [obj2];
	stageSpriteZpos = stageSpriteZpos ~ [ObjRender_GetZ(obj2)];	

	let obj3 = ObjPrim_Create(OBJ_SPRITE_3D);
	ObjPrim_SetTexture(obj3,apartmuurb);
	Obj_SetRenderPriorityI(obj3,20);
	ObjRender_SetColor(obj3,90,90,90);
	ObjRender_SetAngleXYZ(obj3,ax,ay-90,az);
	ObjRender_SetScaleXYZ(obj3,2,2,0);
	ObjRender_SetPosition(obj3,px-512,py+2624,pz+2048);
	
	ObjSprite3D_SetSourceDestRect(obj3,0,448,512,512);
	ObjSprite3D_SetBillboard(obj3,false);
	ObjRender_SetZWrite(obj3,true);

	stageSpriteObj = stageSpriteObj ~ [obj3];
	stageSpriteZpos = stageSpriteZpos ~ [ObjRender_GetZ(obj3)];		
	
	let obj3a = ObjPrim_Create(OBJ_SPRITE_3D);
	ObjPrim_SetTexture(obj3a,apartmuurb);
	Obj_SetRenderPriorityI(obj3a,20);
	ObjRender_SetColor(obj3a,90,90,90);
	ObjRender_SetAngleXYZ(obj3a,ax,ay-90,az);
	ObjRender_SetScaleXYZ(obj3a,2,2,0);
	ObjRender_SetPosition(obj3a,px-512,py+2624,pz-2048);
	
	ObjSprite3D_SetSourceDestRect(obj3a,0,448,512,512);
	ObjSprite3D_SetBillboard(obj3a,false);
	ObjRender_SetZWrite(obj3a,true);

	stageSpriteObj = stageSpriteObj ~ [obj3a];
	stageSpriteZpos = stageSpriteZpos ~ [ObjRender_GetZ(obj3a)];			

	// wall
	let obj4 = ObjPrim_Create(OBJ_SPRITE_3D);
	ObjPrim_SetTexture(obj4,apartmuurb);
	Obj_SetRenderPriorityI(obj4,20);
	ObjRender_SetColor(obj4,190,190,190);
	ObjRender_SetAngleXYZ(obj4,ax,ay,az);
	ObjRender_SetScaleXYZ(obj4,4,2,0);
	ObjRender_SetPosition(obj4,px,py,pz);
	
	ObjSprite3D_SetSourceDestRect(obj4,0,0,1024,512);
	ObjSprite3D_SetBillboard(obj4,false);
	ObjRender_SetZWrite(obj4,true);

	stageSpriteObj = stageSpriteObj ~ [obj4];
	stageSpriteZpos = stageSpriteZpos ~ [ObjRender_GetZ(obj4)];			
	
	let obj5 = ObjPrim_Create(OBJ_SPRITE_3D);
	ObjPrim_SetTexture(obj5,apartmuurb);
	Obj_SetRenderPriorityI(obj5,20);
	ObjRender_SetColor(obj5,90,90,90);
	ObjRender_SetAngleXYZ(obj5,ax,ay,az);
	ObjRender_SetScaleXYZ(obj5,2,2,0);
	ObjRender_SetPosition(obj5,px-1024,py,pz);
	
	ObjSprite3D_SetSourceDestRect(obj5,0,0,2048,512);
	ObjSprite3D_SetBillboard(obj5,false);
	ObjRender_SetZWrite(obj5,true);

	stageSpriteObj = stageSpriteObj ~ [obj5];
	stageSpriteZpos = stageSpriteZpos ~ [ObjRender_GetZ(obj5)];	

	let obj6 = ObjPrim_Create(OBJ_SPRITE_3D);
	ObjPrim_SetTexture(obj6,apartmuurb);
	Obj_SetRenderPriorityI(obj6,20);
	ObjRender_SetColor(obj6,90,90,90);
	ObjRender_SetAngleXYZ(obj6,ax,ay-90,az);
	ObjRender_SetScaleXYZ(obj6,2,2,0);
	ObjRender_SetPosition(obj6,px-512,py,pz+2048);
	
	ObjSprite3D_SetSourceDestRect(obj6,0,0,512,512);
	ObjSprite3D_SetBillboard(obj6,false);
	ObjRender_SetZWrite(obj6,true);

	stageSpriteObj = stageSpriteObj ~ [obj6];
	stageSpriteZpos = stageSpriteZpos ~ [ObjRender_GetZ(obj6)];	

	let obj7 = ObjPrim_Create(OBJ_SPRITE_3D);
	ObjPrim_SetTexture(obj7,apartraam);
	Obj_SetRenderPriorityI(obj7,20);
	ObjRender_SetColor(obj7,90,90,90);
	ObjRender_SetAngleXYZ(obj7,ax,ay,az);
	ObjRender_SetScaleXYZ(obj7,4,4,0);
	ObjRender_SetPosition(obj7,px,py+1536,pz);
	
	ObjSprite3D_SetSourceDestRect(obj7,0,0,1024,512);
	ObjSprite3D_SetBillboard(obj7,false);
	ObjRender_SetZWrite(obj7,true);

	stageSpriteObj = stageSpriteObj ~ [obj7];
	stageSpriteZpos = stageSpriteZpos ~ [ObjRender_GetZ(obj7)];	

	let obj8 = ObjPrim_Create(OBJ_SPRITE_3D);
	ObjPrim_SetTexture(obj8,apartraam);
	Obj_SetRenderPriorityI(obj8,20);
	ObjRender_SetColor(obj8,90,90,90);
	ObjRender_SetAngleXYZ(obj8,ax,ay,az);
	ObjRender_SetScaleXYZ(obj8,4,4,0);
	ObjRender_SetPosition(obj8,px-1024,py+1536,pz);
	
	ObjSprite3D_SetSourceDestRect(obj8,0,0,1024,512);
	ObjSprite3D_SetBillboard(obj8,false);
	ObjRender_SetZWrite(obj8,true);

	stageSpriteObj = stageSpriteObj ~ [obj8];
	stageSpriteZpos = stageSpriteZpos ~ [ObjRender_GetZ(obj8)];	

	let obj9 = ObjPrim_Create(OBJ_SPRITE_3D);
	ObjPrim_SetTexture(obj9,apartraam);
	Obj_SetRenderPriorityI(obj9,20);
	ObjRender_SetColor(obj9,90,90,90);
	ObjRender_SetAngleXYZ(obj9,ax,ay-90,az);
	ObjRender_SetScaleXYZ(obj9,4,4,0);
	ObjRender_SetPosition(obj9,px-512,py+1536,pz+2048);
	
	ObjSprite3D_SetSourceDestRect(obj9,0,0,256,512);
	ObjSprite3D_SetBillboard(obj9,false);
	ObjRender_SetZWrite(obj9,true);

	stageSpriteObj = stageSpriteObj ~ [obj9];
	stageSpriteZpos = stageSpriteZpos ~ [ObjRender_GetZ(obj9)];	
	
	//  back
	let obj10 = ObjPrim_Create(OBJ_SPRITE_3D);
	ObjPrim_SetTexture(obj10,apartraam);
	Obj_SetRenderPriorityI(obj10,20);
	ObjRender_SetColor(obj10,90,90,90);
	ObjRender_SetAngleXYZ(obj10,ax,ay-90,az);
	ObjRender_SetScaleXYZ(obj10,4,4,0);
	ObjRender_SetPosition(obj10,px-512,py+1536,pz-2048);
	
	ObjSprite3D_SetSourceDestRect(obj10,0,0,256,512);
	ObjSprite3D_SetBillboard(obj10,false);
	ObjRender_SetZWrite(obj10,true);

	stageSpriteObj = stageSpriteObj ~ [obj10];
	stageSpriteZpos = stageSpriteZpos ~ [ObjRender_GetZ(obj10)];		
	
	// roof
	let obj11 = ObjPrim_Create(OBJ_SPRITE_3D);
	ObjPrim_SetTexture(obj11,beton);
	Obj_SetRenderPriorityI(obj11,20);
	ObjRender_SetColor(obj11,64,32,32);
	ObjRender_SetAngleXYZ(obj11,90,0,0);
	ObjRender_SetScaleXYZ(obj11,4,4,0);
	ObjRender_SetPosition(obj11,px-512,py+2592,pz);
	
	ObjSprite3D_SetSourceDestRect(obj11,0,0,248,992);
	ObjSprite3D_SetBillboard(obj11,false);
	ObjRender_SetZWrite(obj11,true);

	stageSpriteObj = stageSpriteObj ~ [obj11];
	stageSpriteZpos = stageSpriteZpos ~ [ObjRender_GetZ(obj11)];			
	
}

// Lantern
function makedjlantern(px,py,pz,red,green,blue) {
	let obj = ObjMesh_Create;
	ObjMesh_Load(obj,meshLant);
	ObjRender_SetPosition(obj,px,py,pz);
	ObjRender_SetAngleXYZ(obj,0,0,0);
	Obj_SetRenderPriorityI(obj,20);
	ObjMesh_SetColor(obj,red,green,blue);
	ObjRender_SetScaleXYZ(obj,3,3,3);
	ObjRender_SetBlendType(obj,BLEND_ALPHA);
	ObjRender_SetAlpha(obj,250);	
	ObjRender_SetZWrite(obj,true);

	stageSpriteObj = stageSpriteObj ~ [obj];
	stageSpriteZpos = stageSpriteZpos ~ [ObjRender_GetZ(obj)];	
} 

// Lantern
function makestoplicht(px,py,pz,ay) {
	let obj = ObjMesh_Create;
	ObjMesh_Load(obj,meshStopL);
	ObjRender_SetPosition(obj,px,py,pz);
	ObjRender_SetAngleXYZ(obj,0,ay,0);
	Obj_SetRenderPriorityI(obj,20);
	ObjMesh_SetColor(obj,255,255,255);
	ObjRender_SetScaleXYZ(obj,1.75,1.75,2);
	ObjRender_SetBlendType(obj,BLEND_ALPHA);
	ObjRender_SetAlpha(obj,255);	
	ObjRender_SetZWrite(obj,true);

	stageSpriteObj = stageSpriteObj ~ [obj];
	stageSpriteZpos = stageSpriteZpos ~ [ObjRender_GetZ(obj)];	

	// fake cover for blinking
	let obj2 = ObjPrim_Create(OBJ_SPRITE_3D);
	ObjPrim_SetTexture(obj2,stoplicht);
	Obj_SetRenderPriorityI(obj2,20);
	ObjRender_SetColor(obj2,255,255,255);
	ObjRender_SetAngleXYZ(obj2,0,ay,0);
	ObjRender_SetScaleXYZ(obj2,1.06,1.06,0);
	if(ay == 180) { ObjRender_SetPosition(obj2,px,py,pz+48); }
	if(ay == 0) { ObjRender_SetPosition(obj2,px,py,pz-48); }
	
	ObjSprite3D_SetSourceDestRect(obj2,160,0,240,238);
	ObjSprite3D_SetBillboard(obj2,false);
	ObjRender_SetZWrite(obj2,true);
	
	stageSpriteObj = stageSpriteObj ~ [obj2];
	stageSpriteZpos = stageSpriteZpos ~ [ObjRender_GetZ(obj2)];		
	
	// flare for stoplicht
	let obj3 = ObjPrim_Create(OBJ_SPRITE_3D);
	ObjPrim_SetTexture(obj3,flare);
	Obj_SetRenderPriorityI(obj3,21);
	ObjRender_SetScaleXYZ(obj3,4,4,0);
	ObjRender_SetColor(obj3,255,205,32);
	ObjRender_SetAlpha(obj3,100);
	if(ay == 180) { ObjRender_SetPosition(obj3,px,py,pz+48); }
	if(ay == 0) { ObjRender_SetPosition(obj3,px,py,pz-48); }	

	ObjSprite3D_SetSourceDestRect(obj3,0,0,128,128);
	ObjSprite3D_SetBillboard(obj3,true);
	ObjRender_SetZWrite(obj3,true);
	
	stageSpriteObj = stageSpriteObj ~ [obj3];
	stageSpriteZpos = stageSpriteZpos ~ [ObjRender_GetZ(obj3)];		
	
	// function to control the blinking
	stoplichtControl(obj2,obj3);	
} 

// Sky light for planes
function makeattentieflare(px,py,pz) {

	let obj = ObjPrim_Create(OBJ_SPRITE_3D);
	ObjPrim_SetTexture(obj,flare2);
	Obj_SetRenderPriorityI(obj,20);
	ObjRender_SetAlpha(obj,100);	
	ObjRender_SetColor(obj,255,0,0);
	ObjRender_SetScaleXYZ(obj,3,3,0);
	ObjRender_SetPosition(obj,px,py,pz);
	
	ObjSprite3D_SetSourceDestRect(obj,0,0,128,128);
	ObjSprite3D_SetBillboard(obj,true);
	
	stageSpriteObj = stageSpriteObj ~ [obj];
	stageSpriteZpos = stageSpriteZpos ~ [ObjRender_GetZ(obj)];		
	
	// function to control the blinking
	attentieFlareControl(obj);	
}

// traffic light
function makestoplichtpaal(px,py,pz,ax,ay,az) {

	// pole left
	let obj = ObjPrim_Create(OBJ_SPRITE_3D);
	ObjPrim_SetTexture(obj,lantaarn);
	Obj_SetRenderPriorityI(obj,20);
	ObjRender_SetColor(obj,35,35,35);
	ObjRender_SetAngleXYZ(obj,ax,ay,az);
	ObjRender_SetScaleXYZ(obj,1.05,1.05,0);
	ObjRender_SetPosition(obj,px-1024,py-32,pz);
	
	ObjSprite3D_SetSourceDestRect(obj,46,0,68,1024);
	ObjSprite3D_SetBillboard(obj,false);
	ObjRender_SetZWrite(obj,true);

	stageSpriteObj = stageSpriteObj ~ [obj];
	stageSpriteZpos = stageSpriteZpos ~ [ObjRender_GetZ(obj)];		
	
	let obj2 = ObjPrim_Create(OBJ_SPRITE_3D);
	ObjPrim_SetTexture(obj2,lantaarn);
	Obj_SetRenderPriorityI(obj2,20);
	ObjRender_SetColor(obj2,35,35,35);
	ObjRender_SetAngleXYZ(obj2,ax,ay-90,az);
	ObjRender_SetScaleXYZ(obj2,1.05,1.05,0);
	ObjRender_SetPosition(obj2,px-1024-11,py-32,pz+11);
	
	ObjSprite3D_SetSourceDestRect(obj2,46,0,68,1024);
	ObjSprite3D_SetBillboard(obj2,false);
	ObjRender_SetZWrite(obj2,true);

	stageSpriteObj = stageSpriteObj ~ [obj2];
	stageSpriteZpos = stageSpriteZpos ~ [ObjRender_GetZ(obj2)];			

	// pole right
	let obj3 = ObjPrim_Create(OBJ_SPRITE_3D);
	ObjPrim_SetTexture(obj3,lantaarn);
	Obj_SetRenderPriorityI(obj3,20);
	ObjRender_SetColor(obj3,35,35,35);
	ObjRender_SetAngleXYZ(obj3,ax,ay,az);
	ObjRender_SetScaleXYZ(obj3,1.05,1.05,0);
	ObjRender_SetPosition(obj3,px+1024,py-32,pz+11);
	
	ObjSprite3D_SetSourceDestRect(obj3,46,0,68,1024);
	ObjSprite3D_SetBillboard(obj3,false);
	ObjRender_SetZWrite(obj3,true);

	stageSpriteObj = stageSpriteObj ~ [obj3];
	stageSpriteZpos = stageSpriteZpos ~ [ObjRender_GetZ(obj3)];		
	
	let obj4 = ObjPrim_Create(OBJ_SPRITE_3D);
	ObjPrim_SetTexture(obj4,lantaarn);
	Obj_SetRenderPriorityI(obj4,20);
	ObjRender_SetColor(obj4,35,35,35);
	ObjRender_SetAngleXYZ(obj4,ax,ay-90,az);
	ObjRender_SetScaleXYZ(obj4,1.05,1.05,0);
	ObjRender_SetPosition(obj4,px+1024-11,py-32,pz+11);
	
	ObjSprite3D_SetSourceDestRect(obj4,46,0,68,1024);
	ObjSprite3D_SetBillboard(obj4,false);
	ObjRender_SetZWrite(obj4,true);

	stageSpriteObj = stageSpriteObj ~ [obj4];
	stageSpriteZpos = stageSpriteZpos ~ [ObjRender_GetZ(obj4)];			
	
	// pole front
	let obj5 = ObjPrim_Create(OBJ_SPRITE_3D);
	ObjPrim_SetTexture(obj5,lantaarn);
	Obj_SetRenderPriorityI(obj5,20);
	ObjRender_SetColor(obj5,35,35,35);
	ObjRender_SetAngleXYZ(obj5,ax,ay-90,90);
	ObjRender_SetScaleXYZ(obj5,1.1,1,0);
	ObjRender_SetPosition(obj5,px,py+384,pz+16);
	
	ObjSprite3D_SetSourceDestRect(obj5,46,0,68,2048);
	ObjSprite3D_SetBillboard(obj5,false);
	ObjRender_SetZWrite(obj5,true);

	stageSpriteObj = stageSpriteObj ~ [obj5];
	stageSpriteZpos = stageSpriteZpos ~ [ObjRender_GetZ(obj5)];	
}

// Sunrise sign
function makebord(px,py,pz,ax,ay,az) {
	let obj = ObjPrim_Create(OBJ_SPRITE_3D);
	ObjPrim_SetTexture(obj,bord);
	Obj_SetRenderPriorityI(obj,20);
	ObjRender_SetColor(obj,128,128,188);
	ObjRender_SetAngleXYZ(obj,ax,ay,az);
	ObjRender_SetScaleXYZ(obj,1.4,1.4,0);
	ObjRender_SetPosition(obj,px,py,pz);
	
	ObjSprite3D_SetSourceDestRect(obj,0,0,370,300);
	ObjSprite3D_SetBillboard(obj,false);
	ObjRender_SetZWrite(obj,true);

	stageSpriteObj = stageSpriteObj ~ [obj];
	stageSpriteZpos = stageSpriteZpos ~ [ObjRender_GetZ(obj)];	
}

// Lantern
function maketelbox(px,py,pz) {
	let obj = ObjMesh_Create;
	ObjMesh_Load(obj,meshPhone);
	ObjRender_SetPosition(obj,px,py,pz);
	ObjRender_SetAngleXYZ(obj,0,0,0);
	Obj_SetRenderPriorityI(obj,20);
	ObjMesh_SetColor(obj,166,166,166);
	ObjRender_SetScaleXYZ(obj,3,3,3);
	ObjRender_SetBlendType(obj,BLEND_ALPHA);
	ObjRender_SetAlpha(obj,255);	
	ObjRender_SetZWrite(obj,true);

	stageSpriteObj = stageSpriteObj ~ [obj];
	stageSpriteZpos = stageSpriteZpos ~ [ObjRender_GetZ(obj)];	
} 

// Lantern
function makestreetlant(px,py,pz,ax,ay,az) {
	let obj = ObjMesh_Create;
	ObjMesh_Load(obj,meshStreetL);
	ObjRender_SetPosition(obj,px,py,pz);
	ObjRender_SetAngleXYZ(obj,0,ay,0);
	Obj_SetRenderPriorityI(obj,20);
	ObjMesh_SetColor(obj,96,96,96);
	ObjRender_SetScaleXYZ(obj,7,10,7);
	ObjRender_SetBlendType(obj,BLEND_ALPHA);
	ObjRender_SetAlpha(obj,255);	
	ObjRender_SetZWrite(obj,true);

	// flare for stoplicht
	let obj2 = ObjPrim_Create(OBJ_SPRITE_3D);
	ObjPrim_SetTexture(obj2,flare2);
	Obj_SetRenderPriorityI(obj2,20);
	ObjRender_SetScaleXYZ(obj2,15,15,0);
	ObjRender_SetColor(obj2,255,155,25);
	ObjRender_SetAlpha(obj2,60);
	if(ay == 180) { ObjRender_SetPosition(obj2,px-256,py+256,pz); }
	if(ay == 0) { ObjRender_SetPosition(obj2,px+256,py+256,pz); }

	ObjSprite3D_SetSourceDestRect(obj2,0,0,128,128);
	ObjSprite3D_SetBillboard(obj2,true);
	ObjRender_SetZWrite(obj2,false);

	stageSpriteObj = stageSpriteObj ~ [obj];
	stageSpriteZpos = stageSpriteZpos ~ [ObjRender_GetZ(obj)];	
	
	stageSpriteObj = stageSpriteObj ~ [obj2];
	stageSpriteZpos = stageSpriteZpos ~ [ObjRender_GetZ(obj2)];		
} 

// car
function makecar(px,py,pz,ax,ay,az,type) {	
	let obj = ObjMesh_Create;
	if(type == "mitsu") { ObjMesh_Load(obj,meshCar5); }
	if(type == "race") { ObjMesh_Load(obj,meshCar2); } 
	if(type == "normal") { ObjMesh_Load(obj,meshCar); }
	ObjRender_SetPosition(obj,px,py,pz);
	ObjRender_SetAngleXYZ(obj,ax,ay,az);
	Obj_SetRenderPriorityI(obj,20);
	ObjMesh_SetColor(obj,205,205,125);
	ObjRender_SetScaleXYZ(obj,6,6,6);
	ObjRender_SetBlendType(obj,BLEND_ALPHA);
	ObjRender_SetAlpha(obj,255);	
	ObjRender_SetZWrite(obj,true);

	carMovement(obj,pz,ay);
	stageNonMoveObj = stageNonMoveObj ~ [obj];		
} 

// police car
function makepolcar(px,py,pz,ax,ay,az,type) {
	let obj = ObjMesh_Create;
	ObjMesh_Load(obj,meshCarPol); 
	ObjRender_SetPosition(obj,px,py,pz);
	ObjRender_SetAngleXYZ(obj,ax,ay,az);
	Obj_SetRenderPriorityI(obj,20);
	ObjMesh_SetColor(obj,255,255,255);
	ObjRender_SetScaleXYZ(obj,6,6,6);
	ObjRender_SetBlendType(obj,BLEND_ALPHA);
	ObjRender_SetAlpha(obj,255);	
	ObjRender_SetZWrite(obj,true);

	let obj2 = ObjPrim_Create(OBJ_SPRITE_3D);
	ObjPrim_SetTexture(obj2,flare2);
	Obj_SetRenderPriorityI(obj2,20);
	ObjRender_SetScaleXYZ(obj2,2,2,0);
	ObjRender_SetColor(obj2,255,25,25);
	ObjRender_SetAlpha(obj2,205);
	ObjRender_SetPosition(obj2,px-64,py+256,pz); 
	
	ObjSprite3D_SetSourceDestRect(obj2,0,0,128,128);
	ObjSprite3D_SetBillboard(obj2,true);
	ObjRender_SetZWrite(obj2,false);	
	
	let obj3 = ObjPrim_Create(OBJ_SPRITE_3D);	
	ObjPrim_SetTexture(obj3,flare2);
	Obj_SetRenderPriorityI(obj3,20);
	ObjRender_SetScaleXYZ(obj3,2,2,0);
	ObjRender_SetColor(obj3,25,25,255);
	ObjRender_SetAlpha(obj3,205);
	ObjRender_SetPosition(obj3,px+64,py+256,pz); 
	
	ObjSprite3D_SetSourceDestRect(obj3,0,0,128,128);
	ObjSprite3D_SetBillboard(obj3,true);
	ObjRender_SetZWrite(obj3,false);		
	
	polMovement(obj,pz);
	polMovement(obj2,pz);
	polMovement(obj3,pz);
	carPolAnim(obj2,obj3);
	
	stageNonMoveObj = stageNonMoveObj ~ [obj];	
	stageNonMoveObj = stageNonMoveObj ~ [obj2];	
	stageNonMoveObj = stageNonMoveObj ~ [obj3];	
		
	//stageSpriteObj = stageSpriteObj ~ [obj];
	//stageSpriteZpos = stageSpriteZpos ~ [ObjRender_GetZ(obj)];		
	
	//stageSpriteObj = stageSpriteObj ~ [obj2];
	//stageSpriteZpos = stageSpriteZpos ~ [ObjRender_GetZ(obj2)];		

	//stageSpriteObj = stageSpriteObj ~ [obj3];
	//stageSpriteZpos = stageSpriteZpos ~ [ObjRender_GetZ(obj3)];		
}

// concrete
function makebeton(px,py,pz,ax,ay,az) {
	let obj = ObjPrim_Create(OBJ_SPRITE_3D);
	ObjPrim_SetTexture(obj,beton);
	Obj_SetRenderPriorityI(obj,20);
	ObjRender_SetColor(obj,128,128,92);
	ObjRender_SetAngleXYZ(obj,ax,ay,az);
	ObjRender_SetScaleXYZ(obj,2,2,0);
	ObjRender_SetPosition(obj,px,py,pz);
	
	ObjSprite3D_SetSourceDestRect(obj,0,0,2048,2048);
	ObjSprite3D_SetBillboard(obj,false);
	ObjRender_SetZWrite(obj,true);

	stageSpriteObj = stageSpriteObj ~ [obj];
	stageSpriteZpos = stageSpriteZpos ~ [ObjRender_GetZ(obj)];	
}

// dome wall front entrance
function makewallentry(px,py,pz,ax,ay,az) {
	let obj = ObjPrim_Create(OBJ_SPRITE_3D);
	ObjPrim_SetTexture(obj,domewall);
	Obj_SetRenderPriorityI(obj,20);
	ObjRender_SetColor(obj,128,128,128);
	ObjRender_SetAngleXYZ(obj,ax,ay,az);
	ObjRender_SetScaleXYZ(obj,1.05,1,0);
	ObjRender_SetPosition(obj,px,py,pz);
	
	ObjSprite3D_SetSourceDestRect(obj,0,0,2048,1024);
	ObjSprite3D_SetBillboard(obj,false);
	ObjRender_SetZWrite(obj,true);

	stageSpriteObj = stageSpriteObj ~ [obj];
	stageSpriteZpos = stageSpriteZpos ~ [ObjRender_GetZ(obj)];	
}

// wall piece
function makewallpiece(px,py,pz,ax,ay,az) {
	let obj = ObjPrim_Create(OBJ_SPRITE_3D);
	ObjPrim_SetTexture(obj,domewall2);
	Obj_SetRenderPriorityI(obj,20);
	ObjRender_SetColor(obj,128,128,128);
	ObjRender_SetAngleXYZ(obj,ax,ay,az);
	ObjRender_SetScaleXYZ(obj,1,1,0);
	ObjRender_SetPosition(obj,px,py,pz);
	
	ObjSprite3D_SetSourceDestRect(obj,2,0,1024,1024);
	ObjSprite3D_SetBillboard(obj,false);
	ObjRender_SetZWrite(obj,true);

	stageSpriteObj = stageSpriteObj ~ [obj];
	stageSpriteZpos = stageSpriteZpos ~ [ObjRender_GetZ(obj)];	
}

// wall piece 2 
function makewallpiece2(px,py,pz,ax,ay,az) {
	let obj = ObjPrim_Create(OBJ_SPRITE_3D);
	ObjPrim_SetTexture(obj,domewall3);
	Obj_SetRenderPriorityI(obj,20);
	ObjRender_SetColor(obj,128,128,128);
	ObjRender_SetAngleXYZ(obj,ax,ay,az);
	ObjRender_SetScaleXYZ(obj,2,2,0);
	ObjRender_SetPosition(obj,px,py,pz);
	
	ObjSprite3D_SetSourceDestRect(obj,0,0,1024,512);
	ObjSprite3D_SetBillboard(obj,false);
	ObjRender_SetZWrite(obj,true);

	stageSpriteObj = stageSpriteObj ~ [obj];
	stageSpriteZpos = stageSpriteZpos ~ [ObjRender_GetZ(obj)];	
}

// entry door for the dome
function makedomedoor(px,py,pz,ax,ay,az,side) {
	let obj = ObjPrim_Create(OBJ_SPRITE_3D);
	ObjPrim_SetTexture(obj,domedoor);
	Obj_SetRenderPriorityI(obj,20);
	ObjRender_SetColor(obj,128,128,128);
	ObjRender_SetAngleXYZ(obj,ax,ay,az);
	ObjRender_SetScaleXYZ(obj,1.5,1.5,0);
	ObjRender_SetPosition(obj,px,py,pz);
	
	ObjSprite3D_SetSourceDestRect(obj,0,0,512,511);
	ObjSprite3D_SetBillboard(obj,false);
	ObjRender_SetZWrite(obj,true);
	
	entryDoorListener(obj,ay,side); 

	stageSpriteObj = stageSpriteObj ~ [obj];
	stageSpriteZpos = stageSpriteZpos ~ [ObjRender_GetZ(obj)];	
}

// hallway wall piece
function makehallway(px,py,pz,ax,ay,az) {
	let obj = ObjPrim_Create(OBJ_SPRITE_3D);
	ObjPrim_SetTexture(obj,domehallwall);
	Obj_SetRenderPriorityI(obj,20);
	ObjRender_SetColor(obj,128,128,128);
	ObjRender_SetAngleXYZ(obj,ax,ay,az);
	ObjRender_SetScaleXYZ(obj,2,3,0);
	ObjRender_SetPosition(obj,px,py,pz);
	
	ObjSprite3D_SetSourceDestRect(obj,0,0,2048,256);
	ObjSprite3D_SetBillboard(obj,false);
	ObjRender_SetZWrite(obj,true);
	
	stageSpriteObj = stageSpriteObj ~ [obj];
	stageSpriteZpos = stageSpriteZpos ~ [ObjRender_GetZ(obj)];	
}

// hallway wall piece
function makehallwaylay(px,py,pz,ax,ay,az) {
	let obj = ObjPrim_Create(OBJ_SPRITE_3D);
	ObjPrim_SetTexture(obj,domehallwalllay);
	Obj_SetRenderPriorityI(obj,20);
	ObjRender_SetColor(obj,64,255,64);
	ObjRender_SetAlpha(obj,255);
	ObjRender_SetAngleXYZ(obj,ax,ay,az);
	ObjRender_SetScaleXYZ(obj,2,3,0);
	ObjRender_SetPosition(obj,px,py,pz);
	
	ObjSprite3D_SetSourceDestRect(obj,0,0,2048,256);
	ObjSprite3D_SetBillboard(obj,false);
	ObjRender_SetZWrite(obj,true);
	
	domeWallOverlayListener(obj); 
	
	stageSpriteObj = stageSpriteObj ~ [obj];
	stageSpriteZpos = stageSpriteZpos ~ [ObjRender_GetZ(obj)];	
}

// hallway floor piece
function makehallfloor(px,py,pz,ax,ay,az) {
	let obj = ObjPrim_Create(OBJ_SPRITE_3D);
	ObjPrim_SetTexture(obj,bossvloer);
	Obj_SetRenderPriorityI(obj,20);
	ObjRender_SetColor(obj,255,255,255);
	ObjRender_SetAngleXYZ(obj,ax,ay,az);
	ObjRender_SetScaleXYZ(obj,2,2,0);
	ObjRender_SetPosition(obj,px,py,pz);
	
	ObjSprite3D_SetSourceDestRect(obj,0,0,2048,2048);
	ObjSprite3D_SetBillboard(obj,false);
	ObjRender_SetZWrite(obj,true);
	
	stageSpriteObj = stageSpriteObj ~ [obj];
	stageSpriteZpos = stageSpriteZpos ~ [ObjRender_GetZ(obj)];	
}

// hallway floor piece
function makehallceiling(px,py,pz,ax,ay,az) {
	let obj = ObjPrim_Create(OBJ_SPRITE_3D);
	ObjPrim_SetTexture(obj,bossplafond);
	Obj_SetRenderPriorityI(obj,20);
	ObjRender_SetColor(obj,255,255,255);
	ObjRender_SetAngleXYZ(obj,ax,ay,az);
	ObjRender_SetScaleXYZ(obj,2,2,0);
	ObjRender_SetPosition(obj,px,py,pz);
	
	ObjSprite3D_SetSourceDestRect(obj,0,0,2048,2048);
	ObjSprite3D_SetBillboard(obj,false);
	ObjRender_SetZWrite(obj,true);
	
	stageSpriteObj = stageSpriteObj ~ [obj];
	stageSpriteZpos = stageSpriteZpos ~ [ObjRender_GetZ(obj)];	
}

//-----------------------------------------------------------------
// Inside DJ Dome
//-----------------------------------------------------------------

// floor
function makebossvloer(px,py,pz,ax,ay,az) {
	let obj = ObjPrim_Create(OBJ_SPRITE_3D);
	ObjPrim_SetTexture(obj,bossvloer);
	Obj_SetRenderPriorityI(obj,20);
	ObjRender_SetColor(obj,255,255,255);
	ObjRender_SetAngleXYZ(obj,ax,ay,az);
	ObjRender_SetScaleXYZ(obj,1,1,0);
	ObjRender_SetPosition(obj,px,py,pz);
	
	ObjSprite3D_SetSourceDestRect(obj,0,0,4096,4096);
	ObjSprite3D_SetBillboard(obj,false);
	ObjRender_SetZWrite(obj,true);

	stageNonMoveObj = stageNonMoveObj ~ [obj];
}

// ceiling
function makebossplafond(px,py,pz,ax,ay,az) {
	let obj = ObjPrim_Create(OBJ_SPRITE_3D);
	ObjPrim_SetTexture(obj,bossplafond);
	Obj_SetRenderPriorityI(obj,20);
	ObjRender_SetColor(obj,75,75,75);
	ObjRender_SetAngleXYZ(obj,ax,ay,az);
	ObjRender_SetScaleXYZ(obj,1,1,0);
	ObjRender_SetPosition(obj,px,py,pz);
	
	ObjSprite3D_SetSourceDestRect(obj,0,0,512,4096);
	ObjSprite3D_SetBillboard(obj,false);
	ObjRender_SetZWrite(obj,true);

	stageNonMoveObj = stageNonMoveObj ~ [obj];
}

// ceiling 2
function makebossplafond2(px,py,pz,ax,ay,az){
	let obj = ObjPrim_Create(OBJ_SPRITE_3D);
	ObjPrim_SetTexture(obj,bossplafond);
	Obj_SetRenderPriorityI(obj,20);
	ObjRender_SetColor(obj,125,95,95);
	ObjRender_SetAngleXYZ(obj,ax,ay,az);
	ObjRender_SetScaleXYZ(obj,2,1,0);
	ObjRender_SetPosition(obj,px,py,pz);
	
	ObjSprite3D_SetSourceDestRect(obj,0,0,2048,1024);
	ObjSprite3D_SetBillboard(obj,false);
	ObjRender_SetZWrite(obj,true);

	stageNonMoveObj = stageNonMoveObj ~ [obj];
}

// walls
function makebossmuur(px,py,pz,ax,ay,az){
	let obj = ObjPrim_Create(OBJ_SPRITE_3D);
	ObjPrim_SetTexture(obj,bossmuur);
	Obj_SetRenderPriorityI(obj,20);
	ObjRender_SetColor(obj,125,95,95);
	ObjRender_SetAngleXYZ(obj,ax,ay,az);
	ObjRender_SetScaleXYZ(obj,1,1.5,0);
	ObjRender_SetPosition(obj,px,py,pz);
	
	ObjSprite3D_SetSourceDestRect(obj,0,0,4096,512);
	ObjSprite3D_SetBillboard(obj,false);
	ObjRender_SetZWrite(obj,true);
	
	stageNonMoveObj = stageNonMoveObj ~ [obj];
}

// overlay wall
function makebosslay(px,py,pz,ax,ay,az,rc,gc,bc){
	let obj = ObjPrim_Create(OBJ_SPRITE_3D);
	ObjPrim_SetTexture(obj,bosslay);
	Obj_SetRenderPriorityI(obj,20);
	ObjRender_SetColor(obj,rc,gc,bc);
	ObjRender_SetAngleXYZ(obj,ax,ay,az);
	ObjRender_SetScaleXYZ(obj,1,1.5,0);
	ObjRender_SetPosition(obj,px,py,pz);
	
	ObjSprite3D_SetSourceDestRect(obj,0+s,0,4096+s,512);
	ObjSprite3D_SetBillboard(obj,false);
	ObjRender_SetZWrite(obj,true);
	
	updateDjWallColour(obj);

	stageNonMoveObj = stageNonMoveObj ~ [obj];
} 

// balcony
function makebossbalkon(px,py,pz,ax,ay,az){
	let obj = ObjPrim_Create(OBJ_SPRITE_3D);
	ObjPrim_SetTexture(obj,bossbalkon);
	Obj_SetRenderPriorityI(obj,20);
	ObjRender_SetColor(obj,55,55,55);
	ObjRender_SetAngleXYZ(obj,ax,ay,az);
	ObjRender_SetScaleXYZ(obj,1,1,0);
	ObjRender_SetPosition(obj,px,py,pz);
	
	ObjSprite3D_SetSourceDestRect(obj,0,0,3584,128);
	ObjRender_SetBlendType(obj,BLEND_ADD_ARGB);
	ObjSprite3D_SetBillboard(obj,false);
	ObjRender_SetZWrite(obj,true);

	stageNonMoveObj = stageNonMoveObj ~ [obj];
} 

// people
function makebosscrowd(px,py,pz,ay,type){
	let obj = ObjPrim_Create(OBJ_SPRITE_3D);
	ObjPrim_SetTexture(obj,bosscrowd);
	Obj_SetRenderPriorityI(obj,20);
	ObjRender_SetColor(obj,205,205,205);
	ObjRender_SetAngleXYZ(obj,0,ay,0);
	ObjRender_SetScaleXYZ(obj,1,1.5,0);
	ObjRender_SetPosition(obj,px,py,pz);
	
	ObjSprite3D_SetSourceDestRect(obj,0,0,896,255);
	ObjSprite3D_SetBillboard(obj,false);
	ObjRender_SetZWrite(obj,true);
	
	updateDjCrowd(obj,type);

	stageNonMoveObj = stageNonMoveObj ~ [obj];
} 

// spotlights
function makespot(px,py,pz,ax,ay,az,colour,type) {
	let obj = ObjMesh_Create;
	ObjMesh_Load(obj,meshSpotL);
	ObjRender_SetPosition(obj,px,py,pz);
	ObjRender_SetAngleXYZ(obj,ax,ay,az);
	Obj_SetRenderPriorityI(obj,20);
	ObjMesh_SetColor(obj,96,96,96);
	ObjRender_SetScaleXYZ(obj,2,2,2);
	ObjRender_SetBlendType(obj,BLEND_ALPHA);
	ObjRender_SetAlpha(obj,255);	
	ObjRender_SetZWrite(obj,true);
	
	let obj2 = ObjPrim_Create(OBJ_SPRITE_3D);
	ObjPrim_SetTexture(obj2,bossspots);
	Obj_SetRenderPriorityI(obj2,20);
	ObjRender_SetScaleXYZ(obj2,0.5,0.5,0);
	ObjRender_SetAngleXYZ(obj2,ax,ay,az);
	ObjRender_SetAlpha(obj2,0);
	if(ay == 0) { ObjRender_SetPosition(obj2,px,py,pz+32); }
	if(ay == 90) { ObjRender_SetPosition(obj2,px+32,py,pz); }
	if(ay == 270) { ObjRender_SetPosition(obj2,px-32,py,pz); }
	
	if(colour == "rood") { ObjRender_SetColor(obj2,255,100,100); ObjSprite3D_SetSourceDestRect(obj2,362,0,512,149); }
	if(colour == "blauw") { ObjRender_SetColor(obj2,100,100,255); ObjSprite3D_SetSourceDestRect(obj2,362,306,512,455); }
	if(colour == "groen") { ObjRender_SetColor(obj2,100,255,100); ObjSprite3D_SetSourceDestRect(obj2,362,155,512,304); }
	if(colour == "geel") { ObjRender_SetColor(obj2,255,255,100); ObjSprite3D_SetSourceDestRect(obj2,205,0,355,149); }	
	
	ObjSprite3D_SetBillboard(obj2,false);
	ObjRender_SetZWrite(obj2,true);		

	let obj3 = ObjPrim_Create(OBJ_SPRITE_3D);
	ObjPrim_SetTexture(obj3,flare);
	ObjRender_SetBlendType(obj3,BLEND_ADD_ARGB);
	Obj_SetRenderPriorityI(obj3,20);
	ObjRender_SetScaleXYZ(obj3,3,3,0);
	ObjRender_SetAngleXYZ(obj3,0,0,0);
	ObjRender_SetAlpha(obj3,0);
	if(ay == 0) { ObjRender_SetPosition(obj3,px,py,pz+32); }
	if(ay == 90) { ObjRender_SetPosition(obj3,px+32,py,pz); }
	if(ay == 270) { ObjRender_SetPosition(obj3,px-32,py,pz); }
	
	if(colour == "rood") { ObjRender_SetColor(obj3,255,64,64); }
	if(colour == "blauw") { ObjRender_SetColor(obj3,64,64,255); }
	if(colour == "groen") { ObjRender_SetColor(obj3,64,255,64); }
	if(colour == "geel") { ObjRender_SetColor(obj3,255,255,64); }		
	
	ObjSprite3D_SetSourceDestRect(obj3,0,0,128,128);
	ObjSprite3D_SetBillboard(obj3,true);
	ObjRender_SetZWrite(obj3,false);		
	
	updateDjSpot(obj2,obj3,type);
	
	stageNonMoveObj = stageNonMoveObj ~ [obj];	
	stageNonMoveObj = stageNonMoveObj ~ [obj2];	
}
