Code:
a1=-37.5
a2=-12.5
a3=12.5
a4=37.5
x=2.75
y=3.85
z=1.1
b1=34.5
b2=16.5
b3=8.5
b4=-8.5
b5=-16.5
b6=-34.5
positions = [[a1,x,b1],[a1,x,b2],[a1,x,b3],[a1,x,b4],[a1,x,b5],[a1,x,b6],[a1,z,b1],[a1,z,b2],[a1,z,b3],[a1,z,b4],[a1,z,b5],[a1,z,b6]]
R=viz.RED
G=viz.GREEN
colors=[R,R,R,R,R,R,G,G,G,G,G,G]
balls=[]
def col():
while True:
yield viztask.waitTime(3)
for i in range(0,12):
model=vizshape.addSphere(1,10,10)
model.setPosition(positions[i])
ball = viz.Data()
ball.model = model
x=random.randint(1,10)
if x == 1:
if colors[i]==R:
ball.color=(viz.ORANGE)
if colors[i]==G:
ball.color=(colors[i])
else:
ball.color=(colors[i])
ball.colorShowing = False
balls.append(ball)
viztask.schedule( col() )
def changeColor():
viewPos = viz.MainView.getPosition()
for ball in balls:
ballPos = ball.model.getPosition()
distance = vizmat.Distance(viewPos, ballPos)
if ball.colorShowing is False:
if distance < 10 :
showColor=vizact.sequence(vizact.waittime(0.1),vizact.fadeTo(ball.color,time=0.7))
ball.model.runAction(showColor)
ball.colorShowing = True
else:
if distance > 10 :
showWhite = vizact.fadeTo(viz.WHITE,time=4)
ball.model.runAction(showWhite)
ball.colorShowing = False
vizact.ontimer(0,changeColor)