#define Part_create
//Script by Nick Gerrets

// Part_create( x , y , rotation , obj ) 
// - Alles is relative
// - Heeft variable "parts" pre-defined als 0 nodig (dus voordat je dit script aanroept variabele "parts" maken)
// - rotation is de relatieve extra rotatie
// - obj is het object dat aangemaakt moet worden als part
// - returns -1 als de instancie nie bestaat
// - Returns het id van de instancie die aangemaakt is

// - CREDITS A.U.B. 

{

if !object_exists(argument3) return -1; //return -1 als het object niet bestaat
part[parts]=instance_create(x,y,argument3); //creeer de instancie
part[parts]._parent=id; //geef id van parent, dit kan opgeroepen worden in de part die gemaakt is
part[parts]._color=_color;
partX[parts]=argument0; // relatieve x
partY[parts]=argument1; // relatieve y
partR[parts]=argument2; //rotatie
partD[parts]= point_direction(x,y,x+partX[parts],y+partY[parts]) //directie voor berekeningen
partL[parts]=point_distance(x,y,x+partX[parts],y+partY[parts]); //lengte voor berekeningen
part[parts].Angle=image_angle + partR[parts]; //de directie van het hoofd-object + de relatieve extra angle
part[parts].x= x+partX[parts]; //set x positie
part[parts].y= y+partY[parts]; //set y positie

if partX[parts] < 0 {part[parts].image_xscale*=-1;} //flip/draai om
if partY[parts] > 0 {part[parts].image_yscale*=-1;} //flip/draai om

parts+=1; //dit doe je voor de volgende "part"

return part[parts-1]; //return id instancie
}

#define Part_update
//Script by Nick Gerrets

// Part_update( )
// - Step/end step event
// - Updates de plaats en angle van alle parts die je hebt gemaakt met Part_create();

// - CREDITS A.U.B. 

{
for (i=0; i<parts; i+=1) //loop door alle parts
{
    if instance_exists(part[i]) //kijk of part wel bestaat (voor het geval dat hij kapot is)
    {
        part[i].x=x+lengthdir_x(partL[i],image_angle+partD[i]) //x positie
        part[i].y=y+lengthdir_y(partL[i],image_angle+partD[i]) //y positie
        part[i].Angle=image_angle+partR[i]; //draai-hoek/angle
    }
}
}

#define Part_flip_ver
//Script by Nick Gerrets

// Part_flip_ver( part ID ) 
// - Flipt een "Part" verticaal (om de y-as)
// - returnt -1 als part niet bestaat

// - CREDITS A.U.B. 

{

if !instance_exists( argument0 ) return -1;

with (argument0)
    {
    image_yscale*=-1
    }

}

#define Part_flip_hor
//Script by Nick Gerrets

// Part_flip_ver( part ID ) 
// - Flipt een "Part" horizontaal (om de y-as)
// - returnt -1 als part niet bestaat
// - part ID is het object dat de "part" voorsteld

// - CREDITS A.U.B.

{

if !instance_exists( argument0 ) return -1;

with (argument0)
    {
    image_xscale*=-1
    }

}

