Moin,
da es diese "Primitiven" draw-Funktionen nicht gibt habe ich mich mal dran gesetzt und sie selber geschrieben. Hoffe das kann jemand gebrauchen.
Beachtet das der Script scr_draw_line von der funktion scr_draw_rectangle abhängt.
Alles anzeigen
Alles anzeigen
da es diese "Primitiven" draw-Funktionen nicht gibt habe ich mich mal dran gesetzt und sie selber geschrieben. Hoffe das kann jemand gebrauchen.
Beachtet das der Script scr_draw_line von der funktion scr_draw_rectangle abhängt.
GML-Quellcode
- //------------------------------------------//
- // Script um ein Viereck zu zeichnen //
- // Parameter sind mittlere Position, //
- // Abmessungen, Winkel und einem true //
- // oder false für ausgemalt oder nicht //
- // Beispiel: //
- // scr_draw_rectangle(x,y,128,32,25,false); //
- // zeichnet ein Viereck an der Stelle x,y //
- // mit den Abmessungen 128 pixel breit und //
- // 32 pixel hoch unter einem winkel von 25° //
- // durch das false wird es ausgefüllt //
- // by Nobody-86 //
- //------------------------------------------//
- var v_xx, v_yy, v_a, v_b, v_phi, v_outline;
- v_xx =argument0;
- v_yy =argument1;
- v_a =argument2;
- v_b =argument3;
- v_phi =argument4;
- v_outline =argument5;
- v_a/=2;
- v_b/=2;
- if(v_outline){
- //linie links
- draw_line( v_xx-v_a*cos(v_phi*pi/180)-v_b*sin(v_phi*pi/180),
- v_yy+v_a*sin(v_phi*pi/180)-v_b*cos(v_phi*pi/180),
- v_xx-v_a*cos(v_phi*pi/180)+v_b*sin(v_phi*pi/180),
- v_yy+v_a*sin(v_phi*pi/180)+v_b*cos(v_phi*pi/180),
- );
- //linie unten
- draw_line( v_xx-v_a*cos(v_phi*pi/180)+v_b*sin(v_phi*pi/180),
- v_yy+v_a*sin(v_phi*pi/180)+v_b*cos(v_phi*pi/180),
- v_xx+v_a*cos(v_phi*pi/180)+v_b*sin(v_phi*pi/180),
- v_yy-v_a*sin(v_phi*pi/180)+v_b*cos(v_phi*pi/180),
- );
- //linie rechts
- draw_line( v_xx+v_a*cos(v_phi*pi/180)+v_b*sin(v_phi*pi/180),
- v_yy-v_a*sin(v_phi*pi/180)+v_b*cos(v_phi*pi/180),
- v_xx+v_a*cos(v_phi*pi/180)-v_b*sin(v_phi*pi/180),
- v_yy-v_a*sin(v_phi*pi/180)-v_b*cos(v_phi*pi/180),
- );
- //linie oben
- draw_line( v_xx+v_a*cos(v_phi*pi/180)-v_b*sin(v_phi*pi/180),
- v_yy-v_a*sin(v_phi*pi/180)-v_b*cos(v_phi*pi/180),
- v_xx-v_a*cos(v_phi*pi/180)-v_b*sin(v_phi*pi/180),
- v_yy+v_a*sin(v_phi*pi/180)-v_b*cos(v_phi*pi/180),
- );
- } else {
- draw_primitive_begin(pr_trianglefan);
- //oben links
- draw_vertex(v_xx-v_a*cos(v_phi*pi/180)-v_b*sin(v_phi*pi/180),
- v_yy+v_a*sin(v_phi*pi/180)-v_b*cos(v_phi*pi/180)
- );
- //unten links
- draw_vertex(v_xx-v_a*cos(v_phi*pi/180)+v_b*sin(v_phi*pi/180),
- v_yy+v_a*sin(v_phi*pi/180)+v_b*cos(v_phi*pi/180)
- );
- //unten rechts
- draw_vertex(v_xx+v_a*cos(v_phi*pi/180)+v_b*sin(v_phi*pi/180),
- v_yy-v_a*sin(v_phi*pi/180)+v_b*cos(v_phi*pi/180)
- );
- //oben rechts
- draw_vertex(v_xx+v_a*cos(v_phi*pi/180)-v_b*sin(v_phi*pi/180),
- v_yy-v_a*sin(v_phi*pi/180)-v_b*cos(v_phi*pi/180)
- );
- draw_primitive_end();
- }
GML-Quellcode
- //------------------------------------------//
- // Script um eine Linie mit einer angebenen //
- // Dicke zu zeichnen. Parameter sind //
- // Position von, Position bis, Dicke und //
- // einem true der false ob die Enden //
- // abgerundet dargestellt werden sollen //
- // BENÖTIGT DEN SCRIPT //
- // scr_draw_rectangle() //
- // Beispiel: //
- // scr_draw_line(x,y,mouse_x,mouse_y,32,true);
- // zeichnet eine Linie von Position x,y zur //
- // Position mouse_x,mouse_y geht. //
- // Die liniendicke beträgt 32 Pixel und die //
- // Enden werden rund gezeichnet. //
- // by Nobody-86 //
- //------------------------------------------//
- var v_x1, v_y1, v_x2, v_y2, v_d, v_r;
- v_x1 = argument0;
- v_y1 = argument1;
- v_x2 = argument2;
- v_y2 = argument3;
- v_d = argument4;
- v_r = argument5;
- v_xx = v_x1+(v_x2-v_x1)/2;
- v_yy = v_y1+(v_y2-v_y1)/2;
- scr_draw_rectangle(v_xx,v_yy,point_distance(v_x1,v_y1,v_x2,v_y2),v_d,point_direction(v_x1,v_y1,v_x2,v_y2),false);
- if(v_r){
- draw_circle(v_x1,v_y1,v_d/2,false);
- draw_circle(v_x2,v_y2,v_d/2,false);
- }

"Dummköpfe sind Denkerköpfen weit überlegen. Zahlenmäßig." Ernst Ferstl