function makevloer(px,py,pz,ax,ay,az) {
	let obj = ObjPrim_Create(OBJ_SPRITE_3D);
	ObjPrim_SetTexture(obj,balvloer);
	Obj_SetRenderPriorityI(obj,20);
	ObjRender_SetColor(obj,155,155,155);
	ObjRender_SetAngleXYZ(obj,ax,ay,az);
	ObjRender_SetScaleXYZ(obj,2,2,0);
	ObjRender_SetPosition(obj,px,py,pz);
	
	ObjSprite3D_SetSourceDestRect(obj,0,0,512,512);
	ObjSprite3D_SetBillboard(obj,false);

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

function makemuur(px,py,pz,ax,ay,az) {
	let obj = ObjPrim_Create(OBJ_SPRITE_3D);
	ObjPrim_SetTexture(obj,balmuur);
	ObjRender_SetColor(obj,255,255,255);
	Obj_SetRenderPriorityI(obj,20);
	ObjRender_SetAngleXYZ(obj,ax,ay,az);
	ObjRender_SetScaleXYZ(obj,1,1,0);
	ObjRender_SetPosition(obj,px,py,pz);

	ObjSprite3D_SetSourceDestRect(obj,0,0,1024,512);
	ObjSprite3D_SetBillboard(obj,false);
	ObjRender_SetPermitCamera(obj,true);
	
	stageSpriteObj = stageSpriteObj ~ [obj];
	stageSpriteZpos = stageSpriteZpos ~ [ObjRender_GetZ(obj)];
}

function makeplafon(px,py,pz,ax,ay,az) {
	let obj = ObjPrim_Create(OBJ_SPRITE_3D);
	ObjPrim_SetTexture(obj,balplafon);
	Obj_SetRenderPriorityI(obj,20);
	ObjRender_SetAngleXYZ(obj,ax,ay,az);
	ObjRender_SetScaleXYZ(obj,2,2,0);
	ObjRender_SetPosition(obj,px,py,pz);

	ObjSprite3D_SetSourceDestRect(obj,0,0,512,1024);
	ObjSprite3D_SetBillboard(obj,false);

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

function makeslinger(px,py,pz,ax,ay,az){
	let distance = absolute(pz-(cos(20)*512-256));
	let obj = ObjPrim_Create(OBJ_SPRITE_3D);
	
	if(distance<=startFade && distance>50){
		let increments = (startFade-endFade)/255;
		ObjRender_SetAlpha(obj,(distance-endFade)*increments);
	}
	else if(distance<=50){
		ObjRender_SetAlpha(obj,0);
	}
	
	ObjPrim_SetTexture(obj,balslinger);
	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,998,104);
	ObjSprite3D_SetBillboard(obj,false);

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

function makemat(px,py,pz,ax,ay,az){
	let obj = ObjPrim_Create(OBJ_SPRITE_3D);
	ObjPrim_SetTexture(obj,balmat);
	Obj_SetRenderPriorityI(obj,20);
	ObjRender_SetBlendType(obj,BLEND_ALPHA);
	ObjRender_SetColor(obj,55,55,55);
	ObjRender_SetAngleXYZ(obj,ax,ay,az);
	ObjRender_SetScaleXYZ(obj,2,2,0);
	ObjRender_SetPosition(obj,px,py,pz);
	
	ObjSprite3D_SetSourceDestRect(obj,0,0,128,128);
	ObjSprite3D_SetBillboard(obj,false);

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

function vlinderspot(px,py,pz,draai,red,green,blue){
	let obj = ObjPrim_Create(OBJ_SPRITE_3D);
	ObjPrim_SetTexture(obj,balvspot);
	Obj_SetRenderPriorityI(obj,20);
	ObjRender_SetBlendType(obj,BLEND_ALPHA);
	ObjRender_SetAlpha(obj,180);
	ObjRender_SetColor(obj,red,green,blue);

	ObjRender_SetPosition(obj,px,py,pz);
	ObjRender_SetScaleXYZ(obj,3,3,0);
	
	ObjSprite3D_SetSourceDestRect(obj,0,0,128,128);
	ObjSprite3D_SetBillboard(obj,false);
	
	vlinderspotspin(obj,px,draai);
	stageSpriteObj = stageSpriteObj ~ [obj];
	stageSpriteZpos = stageSpriteZpos ~ [ObjRender_GetZ(obj)];
}

task vlinderspotspin(obj,px,draai) {
	let swingpos = 0;
	let swingframe = 0;
	
	while(!Obj_IsDeleted(obj)) { 
		if(draai==1){ ObjRender_SetAngleXYZ(obj,90,0,butterflySpotlightSpinValue); ObjRender_SetX(obj,px+swingpos); }
		if(draai==2){ ObjRender_SetAngleXYZ(obj,90,0,-butterflySpotlightSpinValue); ObjRender_SetX(obj,px-swingpos); }	 
		swingpos += 120*sin(swingframe)/80;
		swingframe+=0.5;
		yield; 
	} 
} 

function makelampion(px,py,pz){

	let distance = absolute(pz-(cos(20)*128-32));

	let obj1 = ObjPrim_Create(OBJ_SPRITE_3D);
	let obj2 = ObjPrim_Create(OBJ_SPRITE_3D);
	let obj3 = ObjPrim_Create(OBJ_SPRITE_3D);
	let obj4 = ObjPrim_Create(OBJ_SPRITE_3D);
	let obj5 = ObjPrim_Create(OBJ_SPRITE_3D);
	let obj6 = ObjPrim_Create(OBJ_SPRITE_3D);
	
	if(distance<=startFade && distance>64){
		let increments = (startFade-endFade)/255;
		ObjRender_SetAlpha(obj1,(distance-endFade)*increments);
		ObjRender_SetAlpha(obj2,(distance-endFade)*increments);
		ObjRender_SetAlpha(obj3,(distance-endFade)*increments);
		ObjRender_SetAlpha(obj4,(distance-endFade)*increments);
		ObjRender_SetAlpha(obj5,(distance-endFade)*increments);
		ObjRender_SetAlpha(obj6,(distance-endFade)*increments);
	}
	else if(distance<=64){
		ObjRender_SetAlpha(obj1,0);
		ObjRender_SetAlpha(obj2,0);
		ObjRender_SetAlpha(obj3,0);
		ObjRender_SetAlpha(obj4,0);
		ObjRender_SetAlpha(obj5,0);
		ObjRender_SetAlpha(obj6,0);
	}

	ObjPrim_SetTexture(obj5,ballampion);
	Obj_SetRenderPriorityI(obj5,20);
	ObjRender_SetColor(obj5,255,32,32);	
	ObjRender_SetAngleXYZ(obj5,90,45,0);
	ObjRender_SetScaleXYZ(obj5,1,1,0);
	ObjRender_SetPosition(obj5,px,py-32,pz);
	ObjSprite3D_SetSourceDestRect(obj5,64,0,128,64);
	ObjSprite3D_SetBillboard(obj5,false);

	ObjPrim_SetTexture(obj6,ballampion);
	Obj_SetRenderPriorityI(obj6,20);
	ObjRender_SetColor(obj6,255,32,32);	
	ObjRender_SetAngleXYZ(obj6,90,45,0);
	ObjRender_SetScaleXYZ(obj6,1,1,0);
	ObjRender_SetPosition(obj6,px,py+32,pz);
	ObjSprite3D_SetSourceDestRect(obj6,64,0,128,64);
	ObjSprite3D_SetBillboard(obj6,false);
	
	ObjPrim_SetTexture(obj4,ballampion);
	Obj_SetRenderPriorityI(obj4,20);
	ObjRender_SetColor(obj4,255,32,32);	
	ObjRender_SetAngleXYZ(obj4,0,45,180);
	ObjRender_SetScaleXYZ(obj4,1,1,0);
	ObjRender_SetPosition(obj4,px-22,py,pz-23);
	ObjSprite3D_SetSourceDestRect(obj4,0,0,64,64);
	ObjSprite3D_SetBillboard(obj4,false);
	
	ObjPrim_SetTexture(obj3,ballampion);
	Obj_SetRenderPriorityI(obj3,20);
	ObjRender_SetColor(obj3,255,32,32);	
	ObjRender_SetAngleXYZ(obj3,0,45,180);
	ObjRender_SetScaleXYZ(obj3,1,1,0);
	ObjRender_SetPosition(obj3,px+22,py,pz+23);
	ObjSprite3D_SetSourceDestRect(obj3,0,0,64,64);
	ObjSprite3D_SetBillboard(obj3,false);	
	
	ObjPrim_SetTexture(obj1,ballampion);
	Obj_SetRenderPriorityI(obj1,20);
	ObjRender_SetColor(obj1,255,32,32);	
	ObjRender_SetAngleXYZ(obj1,0,135,180);
	ObjRender_SetScaleXYZ(obj1,1,1,0);
	ObjRender_SetPosition(obj1,px+22,py,pz-23);
	ObjSprite3D_SetSourceDestRect(obj1,0,0,64,64);
	ObjSprite3D_SetBillboard(obj1,false);

	ObjPrim_SetTexture(obj2,ballampion);
	Obj_SetRenderPriorityI(obj2,20);
	ObjRender_SetColor(obj2,255,32,32);	
	ObjRender_SetAngleXYZ(obj2,0,135,180);
	ObjRender_SetScaleXYZ(obj2,1,1,0);
	ObjRender_SetPosition(obj2,px-22,py,pz+23);
	ObjSprite3D_SetSourceDestRect(obj2,0,0,64,64);
	ObjSprite3D_SetBillboard(obj2,false);

	stageSpriteObj = stageSpriteObj ~ [obj1];
	stageSpriteZpos = stageSpriteZpos ~ [ObjRender_GetZ(obj1)];		
	stageSpriteObj = stageSpriteObj ~ [obj2];
	stageSpriteZpos = stageSpriteZpos ~ [ObjRender_GetZ(obj2)];	
	stageSpriteObj = stageSpriteObj ~ [obj3];
	stageSpriteZpos = stageSpriteZpos ~ [ObjRender_GetZ(obj3)];	
	stageSpriteObj = stageSpriteObj ~ [obj4];
	stageSpriteZpos = stageSpriteZpos ~ [ObjRender_GetZ(obj4)];	
	stageSpriteObj = stageSpriteObj ~ [obj5];
	stageSpriteZpos = stageSpriteZpos ~ [ObjRender_GetZ(obj5)];	
	stageSpriteObj = stageSpriteObj ~ [obj6];
	stageSpriteZpos = stageSpriteZpos ~ [ObjRender_GetZ(obj6)];	}