Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //create
- w=40 //width of dots
- m=100 //mass
- md=1 //minimum distance
- ex=10 //exceleration
- cs=32 //centering speed
- vd=1.00 //velocity devider
- z=2 //zoom
- pd=false //pixelated display (slower)
- pxe=true //pixel editor
- loop=true //recomended true
- rt=1 //retest size (not functional)
- avvelo=true //use centering
- //actual code again
- //UI values
- go=false
- vu=3
- vr=3
- cm=0.125
- ts=1
- da=1
- ored=255
- oblue=255
- ogreen=255
- //other
- n=0 //number of points
- mxn=0 //maximum points
- rgbr=260 //rgb right
- rgbs=64 //rgb size
- rgbp=8 //rgb spacings
- menus=44 //menu size
- uih=24 //UI height
- colr=c_white
- mosx=0
- mosy=view_hview+width
- mexists=false
- menu="Hide"
- //zoom
- w/=z
- m/=z
- md/=z
- //pxe setup
- if (pxe=true)
- {
- var i;
- for (i=0;i<=floor(view_wview/w);i+=1)
- {
- var l;
- for (l=0;l<=floor(view_hview/w);l+=1)
- {
- pxl[i,l]=false
- }
- }
- }
- //option titles and other things
- op=1
- opp=1
- opn=6
- opt[1,1]="Curser Mass" oppn[1]=1
- opt[2,1]="Velocity Up" oppn[2]=2
- opt[2,2]="Velocity Right"
- opt[3,1]="Red Value" oppn[3]=3
- opt[3,2]="Green Value"
- opt[3,3]="Blue Value"
- opt[4,1]="Time Speed" oppn[4]=1
- opt[5,1]="Dot Amount" oppn[5]=1
- opt[6,1]="Number of Dots" oppn[6]=1
- #define step
- if (mexists=true)
- {mosx=mouse_x; mosy=mouse_y;}
- else
- if(mouse_check_button_pressed(mb_left))
- {mexists=true; mosx=mouse_x; mosy=mouse_y;}
- if (keyboard_check_pressed(vk_space))
- {
- if (go=false)
- {
- go=true
- if (pxe=true)
- {
- var i;
- for (i=0;i<=floor(view_wview/w);i+=1)
- {
- var l;
- for (l=0;l<=floor(view_hview/w);l+=1)
- {
- pxl[i,l]=false
- }
- }
- }
- }
- else {go=false}
- }
- if!(mosy<=24)
- {
- px[0]=mosx;
- py[0]=mosy;
- col[0]=colr;
- }
- //point code
- if (go=true)
- {
- var s;
- for (s=1;s<=ts;s+=1)
- {
- //new velocities
- var i;
- for (i=1;i<=n;i+=1)
- {
- nvx[i]=0
- nvy[i]=0
- var l;
- for (l=0;l<=n;l+=1)
- {
- if(l=0) {m*=cm}
- if(l!=i)
- {
- ri=px[l]-px[i]; //right distance
- up=py[l]-py[i]; //up distance
- d=sqrt(sqr(ri)+sqr(up)); //actual distance
- if (d<md) {d=md}
- f=m/(d/md); //force
- nvx[i]+=(f/d)*ri
- nvy[i]+=(f/d)*up
- }
- if(l=0) {m/=cm}
- }
- vx[i]=(vx[i]+nvx[i]/ex)
- vy[i]=(vy[i]+nvy[i]/ex)
- vx[i]/=vd
- vy[i]/=vd
- }
- //new locations
- var i;
- for (i=1;i<=n;i+=1)
- {
- px[i]+=vx[i]/ex;
- py[i]+=vy[i]/ex;
- if(loop=true)
- {
- while (px[i]>view_wview) {px[i]-=view_wview}
- while (py[i]>view_hview) {py[i]-=view_hview}
- while (px[i]<0) {px[i]+=view_wview}
- while (py[i]<0) {py[i]+=view_hview}
- }
- }
- //averages
- if (avvelo=true)
- {
- avx=0;
- avy=0;
- for (i=1;i<=n;i+=1)
- {
- avx+=vx[i];
- avy+=vy[i];
- }
- avx/=n;
- avy/=n;
- for (i=1;i<=n;i+=1)
- {
- vx[i]-=avx/cs;
- vy[i]-=avy/cs;
- }
- avx=0;
- avy=0;
- for (i=1;i<=n;i+=1)
- {
- avx+=px[i];
- avy+=py[i];
- }
- avx/=n;
- avy/=n;
- for (i=1;i<=n;i+=1)
- {
- px[i]+=(view_wview/2-avx)/cs;
- py[i]+=(view_hview/2-avy)/cs;
- }
- }
- } //timespeed end
- } //go end
- //options
- if!(mosy<=24)
- {
- if (keyboard_check_pressed(vk_right)) {op+=1}
- if (keyboard_check_pressed(vk_left)) {op-=1}
- if(op<1) {op=opn}
- if(op>opn) {op=1}
- if (keyboard_check_pressed(vk_up)) {opp+=1}
- if (keyboard_check_pressed(vk_down)) {opp-=1}
- if(opp<1) {opp=oppn[op]}
- if(opp>oppn[op]) {opp=1}
- if(op=1)
- {
- if (mouse_wheel_up()) {cm*=2}
- if (mouse_wheel_down()) {cm/=2}
- }
- if(op=2)
- {
- if (opp=1) {
- if (mouse_wheel_up()) {vu*=2 vu+=1}
- if (mouse_wheel_down()) {vu-=1 vu/=2} }
- if (opp=2) {
- if (mouse_wheel_up()) {vr*=2 vr+=1}
- if (mouse_wheel_down()) {vr-=1 vr/=2} }
- }
- if(op=3)
- {
- if (opp=1) {
- if (mouse_wheel_up()&&ored<=240) {ored+=15}
- if (mouse_wheel_down()&&ored>=15) {ored-=15} }
- if (opp=2) {
- if (mouse_wheel_up()&&ogreen<=240) {ogreen+=15}
- if (mouse_wheel_down()&&ogreen>=15) {ogreen-=15} }
- if (opp=3) {
- if (mouse_wheel_up()&&oblue<=240) {oblue+=15}
- if (mouse_wheel_down()&&oblue>=15) {oblue-=15} }
- }
- if(op=4)
- {
- if (mouse_wheel_up()) {ts*=2}
- if (mouse_wheel_down()&&ts>1) {ts/=2}
- }
- if(op=5)
- {
- if (mouse_wheel_up()) {da*=2}
- if (mouse_wheel_down()&&da>1) {da/=2}
- }
- if(op=6)
- {
- if (mouse_wheel_up()&&n>mxn/2) {n=mxn}
- if (mouse_wheel_up()&&n<=mxn/2) {n*=2}
- if (mouse_wheel_down()&&n>1) {n=ceil(n/2)}
- }
- //place point
- if(mouse_check_button_pressed(mb_left)&&(pxe=false||go=true))
- {
- var s;
- for(s=1;s<=da;s+=1)
- {
- n+=1;
- mxn+=1;
- rand=random_range(-1,1)
- col[n]=colr;
- px[n]=mosx; py[n]=mosy; vx[n]=(vr+rand)/z; vy[n]=-(vu+rand)/z;
- }
- }
- //pixelart
- if (pxe=true&&go=false)
- {
- px[0]=w*floor(mosx/w)
- py[0]=w*floor(mosy/w)
- pxlx=floor(mosx/w)
- pxly=floor(mosy/w)
- if(mouse_check_button(mb_left)&&pxl[pxlx,pxly]=false)
- {
- pxl[pxlx,pxly]=true
- var s;
- for(s=1;s<=da;s+=1)
- {
- n+=1;
- mxn+=1;
- rand=random_range(-1,1)
- col[n]=colr;
- px[n]=pxlx*w; py[n]=pxly*w; vx[n]=(vr+rand)/z; vy[n]=-(vu+rand)/z;
- }
- }
- }
- }//mouse y end
- //rgb UI
- else
- {
- if(mosx>=rgbr&&mosx<=rgbr+rgbs)
- {
- if (mouse_wheel_up()&&ored<=240) {ored+=15}
- if (mouse_wheel_down()&&ored>=15) {ored-=15}
- if (keyboard_check_pressed(vk_down)) {ored=0}
- if (keyboard_check_pressed(vk_up)) {ored=255}
- }
- if(mosx>=rgbr+rgbs+rgbp&&mosx<=rgbr+rgbs*2+rgbp)
- {
- if (mouse_wheel_up()&&ogreen<=240) {ogreen+=15}
- if (mouse_wheel_down()&&ogreen>=15) {ogreen-=15}
- if (keyboard_check_pressed(vk_down)) {ogreen=0}
- if (keyboard_check_pressed(vk_up)) {ogreen=255}
- }
- if(mosx>=rgbr+rgbs*2+rgbp*2&&mosx<=rgbr+rgbs*3+rgbp*2)
- {
- if (mouse_wheel_up()&&oblue<=240) {oblue+=15}
- if (mouse_wheel_down()&&oblue>=15) {oblue-=15}
- if (keyboard_check_pressed(vk_down)) {oblue=0}
- if (keyboard_check_pressed(vk_up)) {oblue=255}
- }
- if(mouse_check_button_pressed(mb_left)&&mosx<=menus)
- {
- if(menu="Hide") {menu="Show"}
- else {menu="Hide"}
- }
- }
- //other
- colr=make_color_rgb(ored,ogreen,oblue);
- if (go=true) {time="ON"}
- if (go=false) {time="OFF"}
- if (ored<190&&ogreen<190&&oblue<190)
- {rgbcol=c_white}
- else {rgbcol=c_black}
- //option values
- opv[1,1]=cm
- opv[2,1]=vu
- opv[2,2]=vr
- opv[3,1]=ored
- opv[3,2]=ogreen
- opv[3,3]=oblue
- opv[4,1]=ts
- opv[5,1]=da
- opv[6,1]=n
- #define draw
- var i;
- if (pd=false)
- {
- for (i=0;i<=n;i+=1)
- {
- draw_set_color(col[i])
- draw_rectangle(px[i],py[i],px[i]+w,py[i]+w,false)
- }
- }
- else
- {
- for (i=0;i<=n;i+=1)
- {
- draw_set_color(col[i])
- draw_rectangle(w*floor(px[i]/w),w*floor(py[i]/w),w*floor(1+px[i]/w),w*floor(1+py[i]/w),false)
- }
- }
- //User Interfase
- draw_set_color(c_gray)
- draw_rectangle(0,0,view_wview,uih,false)
- draw_set_color(make_color_rgb(64,64,64))
- draw_rectangle(0,0,menus,uih,false)
- //rgb UI
- draw_set_color(colr)
- draw_rectangle(rgbr,0,rgbr+rgbs,uih,false)
- draw_rectangle(rgbr+rgbs+rgbp,0,rgbr+rgbs*2+rgbp,uih,false)
- draw_rectangle(rgbr+rgbs*2+rgbp*2,0,rgbr+rgbs*3+rgbp*2,uih,false)
- draw_set_color(rgbcol)
- draw_set_halign(fa_center)
- draw_text(rgbr+rgbs/2,0,"R:"+ored)
- draw_text(rgbr+rgbs*1.5+rgbp,0,"G:"+ogreen)
- draw_text(rgbr+rgbs*2.5+rgbp*2,0,"B:"+oblue)
- //Text
- draw_set_color(c_white)
- draw_set_halign(fa_left)
- draw_line_width(0,uih,view_wview,uih,3)
- draw_text(rgbr+rgbs*3+rgbp*3+4,0,"Hover and Scroll to change RGB")
- draw_set_halign(fa_center)
- draw_text(menus/2,0,menu)
- draw_set_halign(fa_left)
- draw_text(menus+rgbp,0,"Click or Drag to place dots")
- if(menu="Hide")
- {
- draw_text(0,32,"Space to change Time: "+time)
- draw_text(0,64,"Scroll to change "+opt[op,opp]+": "+opv[op,opp])
- draw_text(0,96,"Left and Right for more options: Op. "+op)
- draw_text(0,128,"Number of dots: "+n)
- draw_text(0,160,"FPS: "+fps)
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement