Sync On:Sync Rate 60:Autocam Off Set Camera Range .01,3000 `Color Backdrop 0 null=Make Vector3(1) Type vectors x as float y as float z as float Endtype Type attributes p as vectors a as vectors v as vectors s as vectors Endtype Global temp as attributes Global speed as float Dim Roid(500) as attributes speed#=.01 Splotch(150,20) Ink Rgb(0,0,200),0 Box 0,0,270,270 Sprite 1,0,0,1 Lock Pixels For i = 1 to 200 Rotate Sprite 1,rnd(360) Set Sprite Diffuse 1,0,rnd(100)+50,0 Paste Sprite 1,rnd(180)+13,rnd(150)+43 Next i Unlock Pixels Blur Bitmap 0,3 Get Image 2,4,4,260,260,1 Ink Rgb(255,255,255),0 Make Object Sphere 1,380,180,180 Texture Object 1,2 Set Object Diffuse 1,Rgb(255,255,255) Set Object Specular 1,Rgb(255,255,50) Set Object Specular Power 1,200 Splotch(150,20) Ink Rgb(0,0,0),0 Box 0,0,270,270 Sprite 1,0,0,1 Lock Pixels c=rnd(50)+200 Set Sprite Diffuse 1,c,c,c For i = 1 to 100 Rotate Sprite 1,rnd(360) Paste Sprite 1,rnd(180)+13,rnd(150)+43 Next i Unlock Pixels Blur BItmap 0,3 Get Image 3,0,0,256,256,0 Ink Rgb(255,255,255),0 Make Object Sphere 2,382,120,120 Texture Object 2,3 Ghost Object On 2 Set Object Light 2,0 Fade Object 2,90 Splotch(150,20) Ink Rgb(35,25,15),0 Box 0,0,270,270 Sprite 1,0,0,1 Lock Pixels For i = 1 to 200 Rotate Sprite 1,rnd(360) c=rnd(50)+25 Set Sprite Diffuse 1,c+10,c,c-10 Paste Sprite 1,rnd(256),rnd(150)+43 Next i Unlock Pixels Get Image 100,4,4,260,260,0 Ink Rgb(255,255,255),0 Make Object Sphere 100,4,5,5 Make Mesh From Object 1,100 Delete Object 100 Make Object triangle 100,0,0,0,0,.01,0,0,0,0 Add Limb 100,1,1 Offset Limb 100,1,0,200,0 Rotate Object 100,Rnd(360),Rnd(360),Rnd(360) Roid(0).s.x=(rnd(20.0)/10.0)-1.0 Roid(0).s.y=(rnd(20.0)/10.0)-1.0 Texture Limb 100,1,100 Set Object Diffuse 100,Rgb(200,200,200) Set Object Ambience 100,Rgb(200,200,180) Set Object Emissive 100,rgb(25,25,23) Set Object Specular 100,rgb(50,50,10) Set Object Specular Power 100,30 For i = 1 to Array Count(Roid(0)) Clone Object 100+i,100 Rotate Object 100+i,Rnd(360),Rnd(360),Rnd(360) Roid(i).s.x=(rnd(20.0)/10.0)-1.0 Roid(i).s.y=(rnd(20.0)/10.0)-1.0 Next i Make Object triangle 3,0,0,0,0,.01,0,0,0,0 Make Mesh From Object 1,3 Add Limb 3,1,1 Offset Limb 3,1,0,200,0 Hide Object 3 `Lock Pixels Create Bitmap 1,512,512 Ink 0,0 Box 0,0,512,512 For i = 0 to 2000+rnd(1000)+Rnd(1000) ink rgb(rnd(55)+200,rnd(55)+200,rnd(55)+200),0 Dot rnd(512),Rnd(512) Next i `Unlock Pixels Ink rgb(255,255,255),0 Get Image 1,0,0,512,512,0 Delete Bitmap 1 Set Current Bitmap 0 Make Object Cube 5,2000 Texture Object 5,1 Set Object Light 5,0 Set Object Emissive 5,rgb(100,100,100) Set Object Cull 5,0 Ink Rgb(255,255,0),0 Box 0,0,128,128 Get Image 6,0,0,128,128,0 Ink rgb(255,255,255),0 For i = 6 to 9 Make Object Sphere i,-540+i*100,12,12 Texture Object i,6 Position Object i,500,60,400 Set Object Emissive i,Rgb(255,255,255) Ghost Object On i Fade Object i,60-i*2 Next i Ghost Object Off 6 Set Object Light 6,0 Fade Object 6,255 Hide Light 0 Make Light 1 Color Light 1,255,255,50 Position Light 1,500,60,400 Set Light Range 1,2000 Set Ambient Light 25 click=0 Do Turn Object Left 1,.002 Turn Object Left 2,.005 Turn Object Right 5,.002 Pitch Object Down 3,(Upkey())*.05 Turn Object Left 3,(LeftKey()-RightKey())*1.0 Position Camera LPosX (3,1), LPosY (3,1), LPosZ (3,1) Rotate Camera LDirX (3,1), LDirY (3,1), LDirZ (3,1) Move_Asteroids() If MouseClick()=1 and click=0 click = 1 Make_Bullet() Endif click=MouseClick() Move_Bullets() Set Cursor 0,0 Print "FPS: ";Screen FPS() Sync Loop Function Move_Asteroids() For i = 0 to Array Count(Roid(0)) If Object Visible(100+i) Pitch Object Down 100+i,speed Rotate Limb 100+i,1,LAngx (100+i,1)+Roid(i).s.x , LAngY (100+i,1)+Roid(i).s.y , LAngZ (100+i,1)+Roid(i).s.z Else Pitch Object Down 100+i,speed r#=Get_Limb_Distance(100+i,1,3,1) If r#>150 Show Object 100+i speed=speed+.0002 Endif Endif Next i Endfunction Function Record_Rotation(ObjectID) temp.a.x = AngX (ObjectID) temp.a.y = AngY (ObjectID) temp.a.z = AngZ (ObjectID) Endfunction Function Record_Position(ObjectID) temp.p.x = PosX (ObjectID) temp.p.y = PosY (ObjectID) temp.p.z = PosZ (ObjectID) Endfunction Function Record_Camera_Rotation() temp.a.x = CAngX () temp.a.y = CAngY () temp.a.z = CAngZ () Endfunction Function Record_Camera_Position() temp.p.x = CPosX () temp.p.y = CPosY () temp.p.z = CPosZ () Endfunction Function Get_Planet_Distance(ObjectID) Set Vector3 1,PosX (ObjectID)- PosX (1),PosY (ObjectID)-PosY (1),PosZ (ObjectID)-PosZ (1) d#=Length Vector3(1) Endfunction d# Function Get_Object_Distance(Obj1,Obj2) Set Vector3 1,PosX (Obj1)-PosX (Obj2),PosY (Obj1)-PosY (Obj2),PosZ (Obj1)-PosZ (Obj2) d#=Length Vector3(1) Endfunction d# Function Get_Limb_Distance(Obj1,L1,Obj2,L2) Set Vector3 1,LPosX (Obj1,L1)-LPosX (Obj2,L2),LPosY (Obj1,L1)-LPosY (Obj2,L2),LPosZ (Obj1,L1)-LPosZ (Obj2,L2) d#=Length Vector3(1) Endfunction d# Function Move_Bullets() For i = 1000 to 1200 If Object Exist(i) If Object Visible(i) Pitch Object Down i,.3 For j=0 to Array Count(Roid(0)) If Object Visible(100+j)=1 r#=Get_Limb_Distance(i,1,100+j,1) if r#<2 Hide Object 100+j Hide Object i Exit Endif Endif Next j Endif Endif Next i Endfunction Function Make_Bullet() b=Free_Bullet() if b=0 then exitfunction If Object Exist(b)=0 Make Object triangle b,-.05,0,0,0,0,3,.05,0,0 Make Mesh From Object 1,b Add Limb b,1,1 Offset Limb b,1,0,199.3,0 Color Limb b,1,rgb(255,0,0) Set Object Emissive b,rgb(200,100,100) Set Object Cull b,0 Else Show Object b Endif Rotate Object b,AngX (3),AngY (3), AngZ (3) Pitch Object Down b,.5 Endfunction Function Free_Bullet() flag=0 For i = 1000 to 1200 If Object Exist(i)=0 flag=1 Exit Endif If Object Visible(i)=0 flag=1 Exit Endif Next i i=i*flag Endfunction i Function Splotch(h,s) Lock Pixels Ink 0,0 Box 200,200,230+s,230+s c=rnd(7)+h-3 Ink Rgb(c,c,c),0 r=rnd(s/2)+s/4 For i# = 0.0 to 360.0 step 2 x=sin(i#)*r+215+s/2 y=cos(i#)*r+215+s/2 line 207+s/2,207+s/2,x,y r=r+(rnd(2)-1) if r>s+15 then r=s+15 m=s-15:If m<2 then m=2 if rthen r=m Next i# Unlock Pixels Get Image 1,200,200,230+s,230+s Endfunction #Constant PosX Object Position X #Constant PosY Object Position Y #Constant PosZ Object Position Z #Constant AngX Object Angle X #Constant AngY Object Angle Y #Constant AngZ Object Angle Z #Constant CPosX Camera Position X #Constant CPosY Camera Position Y #Constant CPosZ Camera Position Z #Constant CAngX Camera Angle X #Constant CAngY Camera Angle Y #Constant CAngZ Camera Angle Z #Constant LPosX Limb Position X #Constant LPosY Limb Position Y #Constant LPosZ Limb Position Z #Constant LDirX Limb Direction X #Constant LDirY Limb Direction Y #Constant LDirZ Limb Direction Z #Constant LAngX Limb Angle X #Constant LAngY Limb Angle Y #Constant LAngZ Limb Angle Z