Code archives/3D Graphics - Misc/Draw3DMouse

This code has been declared by its author to be Public Domain code.

Download source code

Draw3DMouse by Jeppe Nielsen2003
Draw a 3d quad as a pointer. Works with any zoom value, as it uses a second camera.
HidePointer
Graphics3D 800,600,16,2



Init3DMouse("Pointer.png")


Repeat
Cls


Draw3DMouse(MouseX(),MouseY())

RenderWorld

Flip

Until KeyDown(1)
End

Global mousecamera3d
Global mousepivot3d
Global mouseentity3d,mousetexture3d

Function Init3DMouse(file$,flags=1+2+16+32,order=-99,x#=10000,y#=10000,z#=10000)
Clear3DMouse()

mousecamera3d=CreateCamera()
PositionEntity mousecamera3d,x,y,z
CameraClsMode mousecamera3d,0,1
CameraRange mousecamera3d,1,2
EntityOrder mousecamera3d,order

mousepivot3d=CreatePivot(mousecamera3d)

PositionEntity mousepivot3d,-1,Float(GraphicsHeight())/GraphicsWidth(),1
scale#=2.0/GraphicsWidth()
ScaleEntity mousepivot3d,scale,-scale,1

mousetexture3d=LoadTexture(file$,flags)
mouseentity3d=CreateMesh(mousepivot3d)
EntityFX mouseentity3d,1+8

surf=CreateSurface(mouseentity3d)

w#=Float(TextureWidth(mousetexture3d))
h#=Float(TextureHeight(mousetexture3d))

v=AddVertex(surf,0,0,0 ,0,0)
AddVertex(surf,w,0,0 ,1,0)
AddVertex(surf,w,h,0 ,1,1)
AddVertex(surf,0,h,0 ,0,1)

AddTriangle(surf,v,v+1,v+2)
AddTriangle(surf,v,v+2,v+3)

EntityTexture mouseentity3d,mousetexture3d

End Function

Function Clear3DMouse()

If mousetexture3d<>0 Then FreeTexture mousetexture3d: mousetexture3d=0
If mouseentity3d<>0 Then FreeEntity mouseentity3d: mouseentity3d=0
If mousepivot3d<>0 Then FreeEntity mousepivot3d: mousepivot3d=0
If mousecamera3d<>0 Then FreeEntity mousecamera3d: mousecamera3d=0

End Function

Function Draw3DMouse(x,y)

	PositionEntity mouseentity3d,x,y,0

End Function

Comments

None.

Code Archives Forum