BRL.Max2D: | Types | Functions | Source |
The Max2D module provides a set of commands for drawing 2D graphics.
Before using any of the Max2D commands, you must first create a Max2D graphics
object. The easiest way to do this is using the Graphics command.
By default, Max2D is double buffered which means you will have to use
Flip once you have finished drawing each frame of graphics.
Drawing command | Action |
---|---|
Cls | Clears the viewport |
Plot | Draws a single pixel |
DrawLine | Draws a line |
DrawRect | Draws a rectangle |
DrawOval | Draws an oval |
DrawPoly | Draws a polygon |
DrawText | Draws some text |
DrawImage | Draws an image |
DrawPixmap | Draws a pixmap |
Blend mode | Effect |
---|---|
SOLIDBLEND | Pixels overwrite existing backbuffer pixels |
MASKBLEND | Pixels are drawn only if their alpha component is greater than .5 |
ALPHABLEND | Pixels are alpha blended with existing backbuffer pixels |
LIGHTBLEND | Pixel colors are added to backbuffer pixel colors, giving a 'lighting' effect |
SHADEBLEND | Pixel colors are multiplied with backbuffer pixel colors, giving a 'shading' effect |
LockImage allows for direct Image pixel access and requires a corresponding call to UnlockImage when you have have finished reading or modifying the pixels. The DrawPixmap and GrabPixmap commands allow you to move pixels to and from the current graphic display's backbuffer.
The current Scale, Rotation, Origin and Handle settings are taken into account so coordinates for the collision commands acurately match their drawing counterparts DrawRect and DrawImage.
ResetCollisions is used
to clear any or all of the 32 collision layers provided.
TImage | Max2D Image type |
Cls | Clear graphics buffer |
SetClsColor | Set current Cls color |
GetClsColor | Get red, green and blue component of current cls color. |
Plot | Plot a pixel |
DrawRect | Draw a rectangle |
DrawLine | Draw a line |
DrawOval | Draw an oval |
DrawPoly | Draw a polygon |
DrawText | Draw text |
DrawImage | Draw an image to the back buffer |
DrawImageRect | Draw an image to a rectangular area of the back buffer |
DrawSubImageRect | Draw a sub rectangle of an image to a rectangular area of the back buffer |
TileImage | Draw an image in a tiled pattern |
SetColor | Set current color |
GetColor | Get red, green and blue component of current color. |
SetBlend | Set current blend mode |
GetBlend | Get current blend mode |
SetAlpha | Set current alpha level |
GetAlpha | Get current alpha setting. |
SetLineWidth | Sets pixel width of lines drawn with the DrawLine command |
GetLineWidth | Get line width |
SetMaskColor | Set current mask color |
GetMaskColor | Get red, green and blue component of current mask color |
SetVirtualResolution | Set virtual graphics resolution |
VirtualResolutionWidth | Get virtual graphics resolution width |
VirtualResolutionHeight | Get virtual graphics resolution height |
VirtualMouseX | Get virtual mouse X coordinate |
VirtualMouseY | Get virtual mouse Y coordinate |
VirtualMouseXSpeed | Get virtual mouse X speed |
VirtualMouseYSpeed | Get virtual mouse Y speed |
MoveVirtualMouse | Move virtual mouse |
SetViewport | Set drawing viewport |
GetViewport | Get dimensions of current Viewport. |
SetOrigin | Set drawing origin |
GetOrigin | Get current origin position. |
SetHandle | Set drawing handle |
GetHandle | Get current drawing handle. |
SetRotation | Set current rotation |
GetRotation | Get current Max2D rotation setting. |
SetScale | Set current scale |
GetScale | Get current Max2D scale settings. |
SetTransform | Set current rotation and scale |
LoadImageFont | Load an image font |
SetImageFont | Set current image font |
GetImageFont | Get current image font. |
TextWidth | Get width of text |
TextHeight | Get height of text |
LoadImage | Load an image |
LoadAnimImage | Load a multi-frame image |
SetImageHandle | Set an image's handle to an arbitrary point |
AutoMidHandle | Enable or disable auto midhandle mode |
AutoImageFlags | Set auto image flags |
MidHandleImage | Set an image's handle to its center |
ImageWidth | Get width of an image |
ImageHeight | Get height of an image |
CreateImage | Create an empty image |
LockImage | Lock an image for direct access |
UnlockImage | Unlock an image |
GrabImage | Grab an image from the back buffer |
DrawPixmap | Draw pixmap |
GrabPixmap | Grab pixmap |
ImagesCollide | Tests if two images collide |
ImagesCollide2 | Tests if two images with arbitrary Rotation and Scales collide |
ResetCollisions | Clears collision layers specified by the value of mask, mask=0 for all layers. |
CollideImage | Pixel accurate collision testing between transformed Images. |
CollideRect | Pixel accurate collision testing between image layers |
Function Cls() | |
Description | Clear graphics buffer |
Information | Clears the graphics buffer to the current cls color as determined by SetClsColor. |
Example | ' cls.bmx ' a spinning text message ' remove the call to cls to illustrate the ' need for clearing the screen every frame Graphics 640,480 SetOrigin 320,240 While Not KeyHit(KEY_ESCAPE) Cls SetRotation frame DrawText "Press Escape To Exit",0,0 Flip frame:+1 Wend |
Function SetClsColor( red,green,blue ) | |
Description | Set current Cls color |
Information |
The red, green and blue parameters should be in the range of 0 to 255.
The default cls color is black. |
Function GetClsColor( red Var,green Var,blue Var ) | |
Returns | Red, green and blue values in the range 0..255 in the variables supplied. |
Description | Get red, green and blue component of current cls color. |
Function Plot( x#,y# ) | |
Description | Plot a pixel |
Information | Sets the color of a single pixel on the back buffer to the current drawing color defined with the SetColor command. Other commands that affect the operation of Plot include SetOrigin, SetViewPort, SetBlend and SetAlpha. |
Example | ' plot.bmx ' plots a cosine graph ' scrolls along the graph using an incrementing frame variable Graphics 640,480 While Not KeyHit(KEY_ESCAPE) Cls For x=0 To 640 theta=x+frame y=240-Cos(theta)*240 Plot x,y Next frame=frame+1 Flip Wend |
Function DrawRect( x#,y#,width#,height# ) | |
Description | Draw a rectangle |
Information |
Sets the color of a rectangular area of pixels using the current drawing color
defined with the SetColor command.
Other commands that affect the operation of DrawRect include SetHandle, SetScale, SetRotation, SetOrigin, SetViewPort, SetBlend and SetAlpha. |
Example | ' drawrect.bmx ' draws a sequence of rectangles across the screen with ' increasing rotation and scale ' uses the frame variable to cycle through the values 0..9 for ' an animation effect between frames Graphics 640,480 SetBlend ALPHABLEND SetAlpha 0.2 While Not KeyHit(KEY_ESCAPE) Cls DrawText "DrawRect Example",0,0 For r=t To t+500 Step 10 SetRotation r SetScale r/5,r/5 DrawRect r,r,2,2 Next t=t+1 If t=10 t=0 Flip Wend |
Function DrawLine( x#,y#,x2#,y2#,draw_last_pixel=True ) | |
Description | Draw a line |
Information |
DrawLine draws a line from x, y to x2, y2 with the current drawing color.
BlitzMax commands that affect the drawing of lines include SetLineWidth, SetColor, SetHandle, SetScale, SetRotation, SetOrigin, SetViewPort, SetBlend and SetAlpha. The optional draw_last_pixel parameter can be used to control whether the last pixel of the line is drawn or not. Not drawing the last pixel can be useful if you are using certain blending modes. |
Example | ' drawline.bmx ' draws a cross hair at the mouse position using DrawLine Graphics 640,480 HideMouse While Not KeyHit(KEY_ESCAPE) Cls x=MouseX() y=MouseY() DrawLine 320,240,x,y DrawLine x-2,y,x-10,y DrawLine x+2,y,x+10,y DrawLine x,y-2,x,y-10 DrawLine x,y+2,x,y+10 Flip Wend |
Function DrawOval( x#,y#,width#,height# ) | |
Description | Draw an oval |
Information |
DrawOval draws an oval that fits in the rectangular area defined by x, y, width
and height parameters.
BlitzMax commands that affect the drawing of ovals include SetColor, SetHandle, SetScale, SetRotation, SetOrigin, SetViewPort, SetBlend and SetAlpha. |
Example | ' drawoval.bmx ' draws a pair of eyes using 4 DrawOval commands, 2 white, 2 blue ' positions the blue ovals so the eyes track the mouse Graphics 640,480 While Not KeyHit(KEY_ESCAPE) Cls SetColor 255,255,255 DrawOval 0,0,320,200 DrawOval 320,0,320,200 SetColor 0,0,255 x=(MouseX()-320)/10 y=(MouseY()-240)/10 DrawOval 220-32+x,100+y,64,40 DrawOval 420-32+x,100+y,64,40 Flip Wend |
Function DrawPoly( xy#[] ) | |
Description | Draw a polygon |
Information |
DrawPoly draws a polygon with corners defined by an array of x#,y# coordinate pairs.
BlitzMax commands that affect the drawing of polygons include SetColor, SetHandle, SetScale, SetRotation, SetOrigin, SetViewPort, SetBlend and SetAlpha. |
Example | ' drawpoly.bmx ' draws a simple triangle using the ' DrawPoly command and an array of ' floats listed as 3 pairs of x,y ' coordinates Local tri#[]=[0.0,0.0,100.0,100.0,0.0,100.0] Graphics 640,480 While Not KeyHit(KEY_ESCAPE) Cls DrawPoly tri Flip Wend |
Function DrawText( t$,x#,y# ) | |
Description | Draw text |
Information |
DrawText prints strings at position x,@y of the graphics display using
the current image font specified by the SetImageFont command.
Other commands that affect DrawText include SetColor, SetHandle, SetScale, SetRotation, SetOrigin, SetViewPort, SetBlend and SetAlpha. It is recomended that the blend mode be set to ALPHABLEND using the SetBlend command for non jagged antialiased text. Text that will be drawn at a smaller size using the SetScale command should use fonts loaded with the SMOOTHFONT style to benefit from mip-mapped filtering, see LoadImageFont for more information. |
Example | ' drawtext.bmx ' scrolls a large text string across the screen by decrementing the tickerx variable Graphics 640,480 Local tickerx#=640 text$="Yo to all the Apple, Windows and Linux BlitzMax programmers in the house! " text:+"Game development is the most fun, most advanced and definitely most cool " text:+"software programming there is!" While Not KeyHit(KEY_ESCAPE) Cls DrawText "Scrolling Text Demo",0,0 DrawText text,tickerx#,400 tickerx=tickerx-1 If tickerx<-TextWidth(text) tickerx=640 Flip Wend End |
Function DrawImage( image:TImage,x#,y#,frame=0 ) | |
Description | Draw an image to the back buffer |
Information |
Drawing is affected by the current blend mode, color, scale and rotation.
If the blend mode is ALPHABLEND the image is affected by the current alpha value and images with alpha channels are blended correctly with the background. |
Function DrawImageRect( image:TImage,x#,y#,w#,h#,frame=0 ) | |
Description | Draw an image to a rectangular area of the back buffer |
Information |
x, y, w and h specify the destination rectangle to draw to.
frame is the image frame to draw. Drawing is affected by the current blend mode, color, scale and rotation. If the blend mode is ALPHABLEND, then the image is also affected by the current alpha value. |
Function DrawSubImageRect( image:TImage,x#,y#,w#,h#,sx#,sy#,sw#,sh#,hx#=0,hy#=0,frame=0 ) | |
Description | Draw a sub rectangle of an image to a rectangular area of the back buffer |
Information |
x, y, w and h specify the destination rectangle to draw to.
sx, sy, sw and sh specify the source rectangle within the image to draw from. hx and hy specify a handle offset within the source rectangle. frame is the image frame to draw. Drawing is affected by the current blend mode, color, scale and rotation. If the blend mode is ALPHABLEND, then the image is also affected by the current alpha value. |
Function TileImage( image:TImage,x#=0#,y#=0#,frame=0 ) | |
Description | Draw an image in a tiled pattern |
Information | TileImage draws an image in a repeating, tiled pattern, filling the current viewport. |
Function SetColor( red,green,blue ) | |
Description | Set current color |
Information |
The SetColor command affects the color of Plot, DrawRect, DrawLine, DrawText,
DrawImage and DrawPoly.
The red, green and blue parameters should be in the range of 0 to 255. |
Function GetColor( red Var,green Var,blue Var ) | |
Returns | Red, green and blue values in the range 0..255 in the variables supplied. |
Description | Get red, green and blue component of current color. |
Function SetBlend( blend ) | |||||||||||||
Description | Set current blend mode | ||||||||||||
Information |
SetBlend controls how pixels are combined with existing pixels in the back buffer when drawing
commands are used in BlitzMax.
blend should be one of:
|
Function GetBlend() | |
Returns | The current blend mode. |
Description | Get current blend mode |
Information | See SetBlend for possible return values. |
Function SetAlpha( alpha# ) | |
Description | Set current alpha level |
Information |
alpha should be in the range 0 to 1.
alpha controls the transparancy level when the ALPHABLEND blend mode is in effect. The range from 0.0 to 1.0 allows a range of transparancy from completely transparent to completely solid. |
Function GetAlpha#() | |
Returns | the current alpha value in the range 0..1.0 |
Description | Get current alpha setting. |
Function SetLineWidth( width# ) | |
Description | Sets pixel width of lines drawn with the DrawLine command |
Function GetLineWidth#() | |
Returns | Current line width, in pixels |
Description | Get line width |
Function SetMaskColor( red,green,blue ) | |
Description | Set current mask color |
Information | The current mask color is used to build an alpha mask when images are loaded or modified. The red, green and blue parameters should be in the range of 0 to 255. |
Function GetMaskColor( red Var,green Var,blue Var ) | |
Returns | Red, green and blue values in the range 0..255 |
Description | Get red, green and blue component of current mask color |
Function SetVirtualResolution( width#,height# ) | |
Description | Set virtual graphics resolution |
Information |
SetResolution allows you to set a 'virtual' resolution independent of the graphics resolution.
This allows you to design an application to work at a fixed resolution, say 640 by 480, and run it at any graphics resolution. |
Function VirtualResolutionWidth#() | |
Description | Get virtual graphics resolution width |
Function VirtualResolutionHeight#() | |
Description | Get virtual graphics resolution height |
Function VirtualMouseX#() | |
Description | Get virtual mouse X coordinate |
Function VirtualMouseY#() | |
Description | Get virtual mouse Y coordinate |
Function VirtualMouseXSpeed#() | |
Description | Get virtual mouse X speed |
Function VirtualMouseYSpeed#() | |
Description | Get virtual mouse Y speed |
Function MoveVirtualMouse( x#,y# ) | |
Description | Move virtual mouse |
Function SetViewport( x,y,width,height ) | |
Description | Set drawing viewport |
Information | The current ViewPort defines an area within the back buffer that all drawing is clipped to. Any regions of a DrawCommand that fall outside the current ViewPort are not drawn. |
Function GetViewport( x Var,y Var,width Var,height Var ) | |
Returns | The horizontal, vertical, width and height values of the current Viewport in the variables supplied. |
Description | Get dimensions of current Viewport. |
Function SetOrigin( x#,y# ) | |
Description | Set drawing origin |
Information | The current Origin is an x,y coordinate added to all drawing x,y coordinates after any rotation or scaling. |
Function GetOrigin( x# Var,y# Var ) | |
Returns | The horizontal and vertical position of the current origin. |
Description | Get current origin position. |
Function SetHandle( x#,y# ) | |
Description | Set drawing handle |
Information |
The drawing handle is a 2D offset subtracted from the x,y location of all
drawing commands except DrawImage as Images have their own unique handles.
Unlike SetOrigin the drawing handle is subtracted before rotation and scale are applied providing a 'local' origin. |
Function GetHandle( x# Var,y# Var ) | |
Returns | The horizontal and vertical position of the current drawing handle. |
Description | Get current drawing handle. |
Function SetRotation( rotation# ) | |
Description | Set current rotation |
Information | rotation is given in degrees and should be in the range 0 to 360. |
Function GetRotation#() | |
Returns | The rotation in degrees. |
Description | Get current Max2D rotation setting. |
Function SetScale( scale_x#,scale_y# ) | |
Description | Set current scale |
Information | scale_x and scale_y multiply the width and height of drawing commands where 0.5 will half the size of the drawing and 2.0 is equivalent to doubling the size. |
Function GetScale( scale_x# Var,scale_y# Var ) | |
Returns | The current x and y scale values in the variables supplied. |
Description | Get current Max2D scale settings. |
Function SetTransform( rotation#=0,scale_x#=1,scale_y#=1 ) | |
Description | Set current rotation and scale |
Information | SetTransform is a shortcut for setting both the rotation and scale parameters in Max2D with a single function call. |
Function LoadImageFont:TImageFont( url:Object,size,style=SMOOTHFONT ) | |
Returns | An image font object |
Description | Load an image font |
Information | style can be a combination of BOLDFONT, ITALICFONT and SMOOTHFONT flags. Use the SMOOTHFONT flag for improved filtering if the font is to be rotated or scaled. |
Function SetImageFont( font:TImageFont ) | |
Description | Set current image font |
Information |
In order to DrawText in fonts other than the default system font use the SetImageFont
command with a font handle returned by the LoadImageFont command.
Use &{SetImageFont Null} to select the default, built-in font. |
Function GetImageFont:TImageFont() | |
Returns | The current image font. |
Description | Get current image font. |
Function TextWidth( text$ ) | |
Returns | the width, in pixels, of text based on the current image font. |
Description | Get width of text |
Information | This command is useful for calculating horizontal alignment of text when using the DrawText command. |
Function TextHeight( text$ ) | |
Returns | the height, in pixels, of text based on the current image font. |
Description | Get height of text |
Information | This command is useful for calculating vertical alignment of text when using the DrawText command. |
Function LoadImage:TImage( url:Object,flags=-1 ) | |||||||||||
Returns | A new image object | ||||||||||
Description | Load an image | ||||||||||
Information |
url can be either a string or an existing pixmap.
flags can be 0, -1 or any combination of:
Note MIPMAPPEDIMAGE images consume extra video memory, so this flag should only be used when really necessary. If flags is -1, the auto image flags are used: See AutoImageFlags. To combine flags, use the | (boolean OR) operator. |
Function LoadAnimImage:TImage( url:Object,cell_width,cell_height,first_cell,cell_count,flags=-1 ) | |
Returns | An image object |
Description | Load a multi-frame image |
Information |
LoadAnimImage extracts multiple image frames from a single, larger image. url can be either a string or an
existing pixmap.
See LoadImage for valid flags values. |
Function SetImageHandle( image:TImage,x#,y# ) | |
Description | Set an image's handle to an arbitrary point |
Information | An image's handle is subtracted from the coordinates of DrawImage before rotation and scale are applied. |
Function AutoMidHandle( enable ) | |
Description | Enable or disable auto midhandle mode |
Information |
When auto midhandle mode is enabled, all images are automatically 'midhandled' (see MidHandleImage)
when they are created. If auto midhandle mode is disabled, images are handled by their top left corner.
AutoMidHandle defaults to False after calling Graphics. |
Function AutoImageFlags( flags ) | |
Description | Set auto image flags |
Information | The auto image flags are used by LoadImage and CreateImage when no image flags are specified. See LoadImage for a full list of valid image flags. AutoImageFlags defaults to MASKEDIMAGE | FILTEREDIMAGE. |
Function MidHandleImage( image:TImage ) | |
Description | Set an image's handle to its center |
Function ImageWidth( image:TImage ) | |
Returns | The width, in pixels, of image |
Description | Get width of an image |
Function ImageHeight( image:TImage ) | |
Returns | The height, in pixels, of image |
Description | Get height of an image |
Function CreateImage:TImage( width,height,frames=1,flags=-1 ) | |
Returns | A new image object |
Description | Create an empty image |
Information |
CreateImage creates an 'empty' image, which should be initialized using either GrabImage or LockImage
before being drawn.
Please refer to LoadImage for valid flags values. The flags value is always combined with DYNAMICIMAGE. |
Example | ' createimage.bmx ' creates a 256x1 image with a black to blue color gradient Const ALPHABITS=$ff000000 Graphics 640,480,32 image=CreateImage(256,1) map=LockImage(image) For i=0 To 255 WritePixel(map,i,0,ALPHABITS|i) Next UnlockImage(image) DrawImageRect image,0,0,640,480 DrawText "Blue Color Gradient",0,0 Flip WaitKey |
Function LockImage:TPixmap( image:TImage,frame=0,read_lock=True,write_lock=True ) | |
Returns | A pixmap representing the image contents |
Description | Lock an image for direct access |
Information |
Locking an image allows you to directly access an image's pixels.
Only images created with the DYNAMICIMAGE flag can be locked. Locked images must eventually be unlocked with UnlockImage before they can be drawn. |
Function UnlockImage( image:TImage,frame=0 ) | |
Description | Unlock an image |
Information | Unlocks an image previously locked with LockImage. |
Function GrabImage( image:TImage,x,y,frame=0 ) | |
Description | Grab an image from the back buffer |
Information |
Copies pixels from the back buffer to an image frame.
Only images created with the DYNAMICIMAGE flag can be grabbed. |
Example | ' grabimage.bmx ' draws a small graphic then uses grabimage to make an image ' as mask color and cls color both default to black a mask is ' created for the grabbed where any pixels unset on the backbuffer ' become transparent in the grabbed image Graphics 640,480 Cls DrawLine 0,0,32,32 DrawLine 32,0,0,32 DrawOval 0,0,32,32 Local image=CreateImage(640,480,1,DYNAMICIMAGE|MASKEDIMAGE) GrabImage image,0,0 Cls For i=1 To 100 DrawImage image,Rnd(640),Rnd(480) Next Flip WaitKey |
Function DrawPixmap( pixmap:TPixmap,x,y ) | |
Description | Draw pixmap |
Function GrabPixmap:TPixmap( x,y,width,height ) | |
Description | Grab pixmap |
Function ImagesCollide(image1:TImage,x1,y1,frame1,image2:TImage,x2,y2,frame2) | |
Returns | True if any pixels of the two images specified at the given location overlap. |
Description | Tests if two images collide |
Information | ImagesCollide uses the current Rotation and Scale factors from the most previous call to SetScale and SetRotation to calculate at a pixel level if the two images collide. |
Function ImagesCollide2(image1:TImage,x1,y1,frame1,rot1#,scalex1#,scaley1#,image2:TImage,x2,y2,frame2,rot2#,scalex2#,scaley2#) | |
Returns | True if any pixels of the two images specified at the given location overlap. |
Description | Tests if two images with arbitrary Rotation and Scales collide |
Information | ImagesCollide2 uses the specified Rotation and Scale paramteters to calculate at a pixel level if the two images collide (overlap). |
Function ResetCollisions(mask%=0) | |||||||||||||||||||||||||||||||||||||
Description | Clears collision layers specified by the value of mask, mask=0 for all layers. | ||||||||||||||||||||||||||||||||||||
Information |
The BlitzMax 2D collision system manages 32 layers, the mask parameter can
be a combination of the following values or the special value COLLISION_LAYER_ALL in order
to perform collision operations on multiple layers.
Note: COLLISION_LAYER_32 is used by the ImagesCollide and ImagesCollide2 commands.
|
Function CollideImage:Object[](image:TImage,x,y,frame,collidemask%,writemask%,id:Object=Null) | |
Description | Pixel accurate collision testing between transformed Images. |
Information |
The collidemask specifies any layers to test for collision with.
The writemask specifies which if any collision layers the image is added to in it's currently transformed state. The id specifies an object to be returned to future CollideImage calls when collisions occur. |
Example | Strict Local rot,x,y Graphics 640,480 AutoMidHandle True 'image will rotate around it's center Local image:TImage=LoadImage("bullet.png") While Not KeyHit(KEY_ESCAPE) Cls ResetCollisions ' draw the first image at 5 times the size and on an arbitrary angle SetScale 5,5 SetRotation 125 DrawImage image,200,200 ' add the first image to the first collision layer at same postion, rotation ' and scale as it has just been drawn CollideImage image,200,200,0,0,1 ' move the other image relative to the mouse and rotate it continuously x=MouseX() y=MouseY()-20 rot:+1 SetRotation rot DrawImage image,x,y ' test the image at it's current rotation, scale and position with images ' that have been added to the first collision layer If CollideImage(image,x,y,0,1,0) ' reset scale and rotation states so our text is drawn correctly SetScale 1,1 SetRotation 0 DrawText "COLLISION!",20,20 EndIf Flip Wend |
Function CollideRect:Object[](x,y,w,h,collidemask%,writemask%,id:Object=Null) | |
Description | Pixel accurate collision testing between image layers |
Information |
The collidemask specifies any layers to test for collision with.
The writemask specifies which if any collision layers the image is added to in it's currently transformed state. The id specifies an object to be returned to future CollideImage calls when collisions occur. |