/**
 * OBJ_SHOT֐
 * 
 * @param {Integer} x     exW
 * @param {Integer} y     eyW
 * @param {Integer} speed x
 * @param {Integer} angle px
 * @param {Integer} graph 摜
 * @param {Integer} delay xt[
 * @returns {Object} 쐬IuWFNgid
 */
function CreateObjShot(x,y,speed,angle,graph,delay){
	let obj = Obj_Create(OBJ_SHOT);
	Obj_SetPosition(obj,x,y);
	Obj_SetSpeed(obj,speed);
	Obj_SetAngle(obj,angle);
	ObjShot_SetGraphic(obj,graph);
	ObjShot_SetDelay(obj,delay);
	
	return obj;
}

/**
 * OBJ_LASER֐
 * 
 * @param {Integer} x     exW
 * @param {Integer} y     eyW
 * @param {Integer} speed x
 * @param {Integer} angle px
 * @param {Integer} lng   
 * @param {Integer} wid   
 * @param {Integer} graph 摜
 * @param {Integer} delay xt[
 * @param {Boolean} src   ̗L
 * @returns {Object} 쐬IuWFNgid
 */
function CreateObjLaser(x,y,speed,angle,lng,wid,graph,delay,src){
	let obj = Obj_Create(OBJ_LASER);
	Obj_SetPosition(obj,x,y);
	Obj_SetSpeed(obj,speed);
	Obj_SetAngle(obj,angle);
	ObjShot_SetGraphic(obj,graph);
	ObjShot_SetDelay(obj,delay);
	ObjLaser_SetLength(obj,lng);
	ObjLaser_SetWidth(obj,wid);
	ObjLaser_SetSource(obj,src);
	
	return obj;
}

/**
 * OBJ_SINUATE_LASER֐
 * 
 * @param {Integer} x     exW
 * @param {Integer} y     eyW
 * @param {Integer} speed x
 * @param {Integer} angle px
 * @param {Integer} lng   
 * @param {Integer} wid   
 * @param {Integer} graph 摜
 * @param {Integer} delay xt[
 * @returns {Object} 쐬IuWFNgid
 */
function CreateObjSinuateLaser(x,y,speed,angle,lng,wid,graph,delay){
	let obj = Obj_Create(OBJ_SINUATE_LASER);
	Obj_SetPosition(obj,x,y);
	Obj_SetSpeed(obj,speed);
	Obj_SetAngle(obj,angle);
	ObjShot_SetGraphic(obj,graph);
	ObjShot_SetDelay(obj,delay);
	ObjSinuateLaser_SetLength(obj,lng);
	ObjSinuateLaser_SetWidth(obj,wid);
	
	return obj;
}

/**
 * OBJ_EFFECT֐
 * 
 * @param {String}  effectimg 摜
 * @param {Integer} x         SxW
 * @param {Integer} y         SyW
 * @param {Integer} cutx      ؂o_xl
 * @param {Integer} cuty      ؂o_yl
 * @param {Integer} imgx      摜X
 * @param {Integer} imgy      摜Y
 * @param {Integer} layer     \C[
 * @param {Integer} alpha     l
 * @param {Integer} r         Rl
 * @param {Integer} g         Gl
 * @param {Integer} b         Bl
 * @returns {Object} 쐬IuWFNgid
 */
function CreateObjEffect(effectimg,x,y,cutx,cuty,imgx,imgy,layer,alpha,r,g,b){
	let ImgXHalf = imgx / 2;
	let ImgYHalf = imgy / 2;
	
	let obj = Obj_Create(OBJ_EFFECT);
	ObjEffect_SetTexture(obj,effectimg);
	ObjEffect_SetPrimitiveType(obj, PRIMITIVE_TRIANGLESTRIP);
	ObjEffect_CreateVertex(obj,4);
	
	ObjEffect_SetVertexXY(obj, 0, -ImgXHalf, -ImgYHalf);
	ObjEffect_SetVertexXY(obj, 1, -ImgXHalf,  ImgYHalf);
	ObjEffect_SetVertexXY(obj, 2,  ImgXHalf, -ImgYHalf);
	ObjEffect_SetVertexXY(obj, 3,  ImgXHalf,  ImgYHalf);
	
	ObjEffect_SetVertexUV(obj, 0,        cutx,        cuty);
	ObjEffect_SetVertexUV(obj, 1,        cutx, cuty + imgy);
	ObjEffect_SetVertexUV(obj, 2, cutx + imgx,        cuty);
	ObjEffect_SetVertexUV(obj, 3, cutx + imgx, cuty + imgy);
	
	ObjEffect_SetVertexColor(obj,0,alpha,r,g,b);
	ObjEffect_SetVertexColor(obj,1,alpha,r,g,b);
	ObjEffect_SetVertexColor(obj,2,alpha,r,g,b);
	ObjEffect_SetVertexColor(obj,3,alpha,r,g,b);
	
	ObjEffect_SetLayer(obj,layer);
	
	Obj_SetPosition(obj,x,y);
	
	return obj;
}