; // Initialize Graphics
Graphics3D 640,480,32,0
SeedRnd MilliSecs()
; // Color Sphere
Type ColorSphere
Field name$
Field r,g,b
Field ent
End Type
; // Create Color Sphere
Function CreateColorSphere(name$,r,g,b)
CS.ColorSphere=New ColorSphere
CS\name$=name$
CS\r=r
CS\g=g
CS\b=b
CS\ent=CreateSphere(8)
NameEntity CS\ent,Str$(Handle(CS.ColorSphere))
PositionEntity CS\ent,Rnd(-480,480),Rnd(-360,360),640+Rnd(-100,100)
tRadius#=Rnd(32,128)
ScaleEntity CS\ent,tRadius#,tRadius#,tRadius#
EntityPickMode CS\ent,2
EntityColor CS\ent,CS\r,CS\g,CS\b
End Function
; // Create Some
CreateColorSphere("Red Rod",192,64,64)
CreateColorSphere("Blue Bill",64,64,192)
CreateColorSphere("Green George",64,192,64)
CreateColorSphere("Purple Pill",192,64,192)
CreateColorSphere("Yellow Yanny",192,192,64)
CreateColorSphere("Orange Orange",192,96,64)
CreateColorSphere("Teal Tiger",64,192,192)
CreateColorSphere("White Washington",192,192,192)
CreateColorSphere("Black BMW",64,64,64)
; // Create Camera and Sun
Global Camera=CreateCamera()
Global Sun=CreateLight(2)
PositionEntity Sun,0,0,320
LightColor Sun,160,160,160
AmbientLight 48,48,48
; // Main Loop
SetFont LoadFont("Tahoma",12,False,False,False)
SetBuffer BackBuffer()
While Not KeyDown(1)
; // Check Pick
CameraPick Camera,MouseX(),MouseY()
CS.ColorSphere=Null
If Not PickedEntity()=0
CS.ColorSphere=Object.ColorSphere(Int(EntityName(PickedEntity())))
EndIf
; // Render
UpdateWorld
RenderWorld
; // Draw Cursor
mx=MouseX()
my=MouseY()
Color 32,32,32
For tx=-1 To 1
For ty=-1 To 1
Line mx+tx,my+ty,mx+6+tx,my+6+ty
Line mx+tx,my+ty,mx+tx,my+8+ty
Next
Next
Color 255,255,255
Line mx,my,mx+6,my+6
Line mx,my,mx,my+8
; // Show Data
If Not CS.ColorSphere=Null
Color 32,32,32
OutlineText mx+9,my,"Name: "+CS\name$
OutlineText mx+9,my+12,"Color: "+Str$(CS\r)+","+Str$(CS\g)+","+Str$(CS\b)
Color 255,255,255
Text mx+9,my,"Name: "+CS\name$
Text mx+9,my+12,"Color: "+Str$(CS\r)+","+Str$(CS\g)+","+Str$(CS\b)
EndIf
; // Flip
Flip
; // End Main Loop
Wend
; // Outline Text
Function OutlineText(TextX,TextY,TextTxt$,TextCenter=False,TextVertical=False)
For tx=-1 To 1
For ty=-1 To 1
Text TextX+tx,TextY+ty,TextTxt$,TextCenter,TextVertical
Next
Next
End Function |