Hi,
I tried out your script and it worked for me. I've modified your script so that it draws the area of the circular hotspot. This should make it easier for you to debug. Let me know if you still can't get it working.
Code:
import viz
viz.go()
SAFE = 1
UNSAFE = 2
TARGET = 3
viz.add('tut_ground.wrl')
CIRCLE_X = 0
CIRCLE_Z = 3
CIRCLE_RADIUS = 0.5
def handlemyhotspots(id,x,y,z):
if id == SAFE:
print 'inside safe zone'
viz.clearcolor(1,1,1)
viz.starthotspot(UNSAFE,viz.RECTANGLE_HOTSPOT_OUT,0,3,2.4,6)
elif id == UNSAFE:
print 'outside safe zone'
viz.clearcolor(0,0,0)
viz.starthotspot(SAFE,viz.RECTANGLE_HOTSPOT_IN,0,3,2.4,6)
elif id == TARGET:
print 'at target'
viz.callback(viz.HOTSPOT_EVENT, handlemyhotspots)
viz.starthotspot(UNSAFE,viz.RECTANGLE_HOTSPOT_OUT,0,3,2.4,6)
viz.starthotspot(TARGET,viz.CIRCLE_HOTSPOT_IN,CIRCLE_X,CIRCLE_Z,CIRCLE_RADIUS)
import math
viz.startlayer(viz.LINES)
viz.linewidth(3)
viz.vertexcolor(viz.RED)
viz.vertex(CIRCLE_X,0,CIRCLE_Z)
viz.vertex(CIRCLE_X,2,CIRCLE_Z)
viz.startlayer(viz.LINE_LOOP)
for a in range(0,360,10):
x = math.sin(viz.radians(a))*CIRCLE_RADIUS
z = math.cos(viz.radians(a))*CIRCLE_RADIUS
viz.vertex(x+CIRCLE_X,0.1,z+CIRCLE_Z)
viz.endlayer()