View Single Post
  #3  
Old 10-14-2010, 12:25 PM
just alex just alex is offline
Member
 
Join Date: Nov 2008
Posts: 18
Code:
import viz
import math
import vizmat
import vizinfo
import vizact
viz.go(viz.FULLSCREEN)


#adds the ppt
PORT_PPT = 1
ppt = viz.add('vizppt.dls')

ppt.command(3,"",3,1,3) #scales ppt tracking on xyz axis

viz.eyeheight(0)

#collisions on
#viz.collision(viz.ON)

view = viz.get(viz.MAIN_VIEWPOINT)
view.rotate(0,1,0,90)
viz.MainView.collision(viz.ON)


#This function is called when a collision occurs
#def mycollision(info):
   #print 'Collided', info.object


#Create a callback for a collision event
#viz.callback(viz.COLLISION_EVENT, mycollision)

PORT_INTERSENSE = 2
isense = viz.add('intersense.dls')
tracker = viz.add('intersense.dls')
viz.tracker()
tracker.reset()



#Add the street and drop it a little bit to be below the avatars feet.
street = viz.add('objects/bspcity.bsp')
street.translate(0,-.2,0)


males = []
females = []
walking = []
whichturn = 0

#List the timers.
WALKING = 0
MALEMEETING = 3
FEMALEMEETING = 4
THROWINGMAN =7
HOLDVIEW = 8
TIMING = 9

#Add the heads for the males.
maleheads = ['Male/heads/M-015-2L.vzf','Male/heads/M-056L.vzf', 'Male/heads/M-063L.vzf']
femaleheads = []
bodyparts = ['male_legs.cmx','male_torso_LS.cmx','male_shoes.cmx']
maleclothes = ['Male/clothes/male1.jpg','Male/clothes/male2.jpg','Male/clothes/male3.jpg']
#Make some avatars.
for i in range(2):
   male = viz.add('male.cfg')
   male.translate(i,0,0)
   male.visible(0,'male_head.cmx')
   male.face(maleheads[i])
   clothes = viz.add(maleclothes[i])
   for j in bodyparts:
       male.texture(clothes,j)
   males.append(male)
       
for i in range(2):
   female = viz.add('female.cfg')
   female.translate(i,0,0)
   females.append(female)



#Set up paramters for walking guy.
males[0].translate(0,0,-5)
males[0].rotate(0,1,0,-90)
males[0].whichturn = 0
males[0].set = [[1.5,0,-5],[1.5,0,15],[5,0,15],[-5,0,-5]]
males[0].end = 4
walking.append(males[0])

#Set up paramters for walking girl.
females[0].translate(1,0,-7)
females[0].rotate(0,1,0,-90)
females[0].whichturn = 0
females[0].set = [[1.5,0,0],[1,0,15],[2,0,15],[-5,0,-5]]
females[0].end = 4
walking.append(females[0])

#Add car.
car = viz.add('mini.osgx')

#set car stuff
car.translate(-1.5,0,8)
car.rotate(0,1,0,180)


#for x in range(0,len(positions)):
       #cp = viz.add(viz.CONTROL_POINT)
       #cp.setPosition(positions[x])
       #path.add(cp,x+1)

#Set up for meeting.
males[1].translate(-9,0,21)
females[1].translate(2,0,7)
females[1].state(1)
malemoves = [2,2,4,4,2,4,4,4,4,4,4,2,2,12]
femalemoves = [6,5,12,12,1]
females[1].rotate(0,1,0,-55)
males[1].rotate(0,1,0,135)
males[1].state(1)




#Set up for timing.
timebomb = 0


def onkeydown(key):
   if key == '0':
       viz.starttimer(WALKING, .1, viz.PERPETUAL)
   
   
   if key == '9':
       females[1].addAction(6)
       males[1].goto(1.6,0,7.7)
       females[1].spinto(0,1,0,-55)
       females[1].state(12)
       viz.starttimer(MALEMEETING,.1)
       viz.starttimer(FEMALEMEETING,.1)
   
   
   if key == '8':
       viz.starttimer(THROWINGMAN,.1)
   
   if key == '7':
       viz.starttimer(DRIVING,.1)

   if key == 's':
       print 's'
       viz.starttimer(TIMING,1, viz.PERPETUAL)
       
def ontimer(num):
   global gravity, timebomb

   if num == WALKING:
       for agent in walking:
           agentposition = agent.get(viz.POSITION)
           agentgap = vizmat.Distance(agentposition, agent.set[agent.whichturn])
           if agentgap < .1:
               agent.whichturn += 1
               if agent.whichturn == agent.end:
                   agent.whichturn = 0
           
           walk = vizact.walkto(agent.set[agent.whichturn][0],agent.set[agent.whichturn][1],agent.set[agent.whichturn][2])
           agent.addAction(walk)
           
           
   if num == MALEMEETING:
       if len(malemoves)>1:
           animation = malemoves.pop(0)
           duration = males[1].getduration(animation)
           males[1].execute(animation)
           viz.starttimer(MALEMEETING, duration-.15)
       else:
           animation = malemoves.pop(0)
           males[1].state(animation)

   if num == FEMALEMEETING:
       if len(femalemoves)>1:
           animation = femalemoves.pop(0)
           duration = females[1].getduration(animation)
           females[1].execute(animation)
           viz.starttimer(FEMALEMEETING, duration-.15)
       else:
           animation = femalemoves.pop(0)
           females[1].state(animation)
   
   
   if num == THROWINGMAN:
       males[2].execute(9)
       males[2].execute(1)
       viz.starttimer(THROWINGMAN, 10)
   
   if num == HOLDVIEW:
       view.translate(-8.5,1.5,-2)
       
   if num == TIMING:
       print timebomb
       timebomb += 1
       
       if timebomb == 1:
           onkeydown('0')
           
       elif timebomb == 3:
           onkeydown('8')
       
       elif timebomb == 10:
           onkeydown('9')
       
       elif timebomb == 20:
           onkeydown('3')
       
       elif timebomb == 30:
           onkeydown('1')
       
       elif timebomb == 80:
           viz.quit()
   
viz.callback(viz.TIMER_EVENT,ontimer)

viz.callback(viz.KEYDOWN_EVENT,onkeydown)
viz.starttimer(HOLDVIEW,.001, viz.PERPETUAL)
There's a few left over bits from previous experiments in here, but I don't think anything left in there affects the walking around
Reply With Quote