Code archives/3D Graphics - Misc/Compass

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

Download source code

Compass by stayne2010
Very simple example of implementing a compass. Hope you learn something from it!
Graphics3D 640,480,0,2
SetBuffer BackBuffer() 

camera=CreateCamera() 

light=CreateLight() 
RotateEntity light,90,0,0 

cube=CreateCube() 
PositionEntity cube,0,0,5 

compass = CreateSprite()
ScaleSprite compass,1,.1
PositionEntity compass,0,2,3

tex=CreateTexture(128,18) 
SetBuffer TextureBuffer(tex) 
ClsColor 50,50,50 
Cls
font=LoadFont("verdana",19) 
SetFont font 
Color 255,255,255
Text 0,0,"N | E | S | W |"

EntityTexture compass,tex 
SetBuffer BackBuffer()

While Not KeyDown(1)
	
	compassrot# = EntityYaw(cube)
		
	If compassrot# < 0 Then compassrot# = compassrot# + 360
		
	PositionTexture tex,compassrot#/360,0
		
	TurnEntity cube,0,-MouseXSpeed(),0
		
	MoveMouse GraphicsWidth()/2,GraphicsHeight()/2

	RenderWorld()
		
	Flip
	
Wend 

End

Comments

_PJ_2010
Nice try, but it's inherently flawed due to the different sizes of character spacing withing "N E S W" so the fact that the texturewidth being 128pixels, does not divide by 360 accurately in terms of the position of the N, E ,S and W markers or the | separtators.
Whilst the 'current' face direction appears to be correct, the 45-degree markers and other directions often slip out of sync occasionally between the four main points.


Code Archives Forum