View Single Post
  #19  
Old 12-03-2013, 12:33 AM
maya maya is offline
Member
 
Join Date: Nov 2013
Location: United Arab Emirates
Posts: 21
the replay is too long so I had to divided into 2. sorry for that.


######client2#######

Code:
import viz
import viznet
import vizinfo
import vizinput
import viztask
import vizact
import vizshape
import vizproximity

viz.go()
viz.MainView.setPosition([0,0.1,0])
#viz.MainView.lookAt([50,25,-40])
#Enable full screen anti-aliasing (FSAA) to smooth edges
viz.setMultiSample(4)
#Increase the Field of View
viz.MainWindow.fov(60)
piazza = viz.add('piazza.osgb')
#maze = viz.add('tankmaze.wrl')

sphere = vizshape.addSphere(radius=0.2)
sphere.setPosition(0,0,20)
sphere.color(viz.RED)

text = viz.addText('radiation source',parent=sphere)
text.setPosition([-0.3,0.3,0])
text.setScale([0.2]*3)
text.color(viz.RED)
text.visible(viz.ON)

text_2D = viz.addText('radiation source area', viz.SCREEN )
text_2D.setPosition(0,0,20)
text_2D.color(viz.RED)
text_2D.visible(viz.OFF)


objects = {}

#
UPDATE = viznet.id('update') 
CLIENT_DISCONNECTED = viznet.id('client_disconnected') 
CHAT = viznet.id('chat') 

#
SERVER_NAME=vizinput.input('Enter Server Name') 
while not viznet.client.connect(SERVER_NAME,port_in=14951,port_out=14950): 
    if vizinput.ask('Could not connect to ' + SERVER_NAME + ' would you like to try another?'): 
        SERVER_NAME=vizinput.input('Enter Server Name') 
    else: 
        viz.quit() 
        break 
#
objectList = ['duck.wrl','logo.wrl','vcc_male.cfg','vcc_female.cfg'] 
obj_choice=vizinput.choose('Connected. Select your character',objectList) 


#
#Create proximity manager
manager = vizproximity.Manager()
#manager.setDebug(viz.ON)

#Add main viewpoint as proximity target
target = vizproximity.Target(viz.MainView)
manager.addTarget(target)

#Create sensor using male avatar
#avatar = viz.addAvatar('vcc_male2.cfg',pos=[0,0,4],euler=[180,0,0])
#avatar.state(1)

#sensor = vizproximity.Sphere(0.2, centre=(0,0,0))
sensor = vizproximity.Sensor( vizproximity.CircleArea(5),source=sphere)

manager.addSensor(sensor)

#Change state of avatar to talking when the user gets near
def EnterProximity(e):
    text_2D.visible(viz.ON)
    
    #text.visible(viz.ON)

#Change state of avatar to idle when the user moves away
def ExitProximity(e):
    #text.visible(viz.OFF)
    text_2D.visible(viz.OFF)

manager.onEnter(sensor,EnterProximity)
manager.onExit(sensor,ExitProximity)
     
#vizact.onkeydown('d',manager.setDebug,viz.TOGGLE) 

#
def sendUpdate():
     ori= viz.MainView.getEuler()
     pos = viz.MainView.getPosition()
     viznet.client.sendAll(UPDATE,client=viz.getComputerName(),object=obj_choice,pos=pos,ori=ori)
vizact.ontimer(.05,sendUpdate)

#
def update(e): 
    if e.client != viz.getComputerName(): 
        try: 
            objects[e.client].setPosition(e.pos) 
            objects[e.client].setEuler(e.ori) 
        except KeyError: 
            objects[e.client] = viz.add(objectList[e.object],scale=[2,2,2],pos=e.pos,euler=e.ori) 
            objects[e.client].tooltip = e.client 
viz.callback(UPDATE,update) 

#
def client_disconnected(e): 
    objects[e.client].remove() 
    del objects[e.client] 
viz.callback(CLIENT_DISCONNECTED,client_disconnected) 

def onStopServer(e): 
    print 'Disconnected from server' 
    viz.quit() 
viz.callback(viznet.SERVER_DISCONNECT_EVENT,onStopServer) 

#
import viztip 
tth = viztip.ToolTip() 
tth.start() 
tth.setDelay(0) 

#
def updateChat(msg): 
    text.message('\n'.join(text.getMessage().split('\n')[1:])+'\n'+msg) 

text = viz.addText('\n\n\n\n',viz.SCREEN) 
text.alignment(viz.TEXT_LEFT_BOTTOM) 
text.fontSize(25) 
text.setPosition(.05,.08) 

input = viz.addText('> _',viz.SCREEN) 
input.fontSize(25) 
input.setPosition(.032,.05) 
input.visible(0) 

def onChat(e): 
    updateChat(e.client+': '+e.chat) 
viz.callback(CHAT,onChat) 

talking = False 
def onKeyDown(key): 
    global talking 
    if key == 'y' and not talking: 
        talking = True 
        input.message('> _') 
        input.visible(1) 
    elif key == viz.KEY_ESCAPE and talking: 
        talking = False 
        input.visible(0) 
        return True 
    elif talking and key == viz.KEY_RETURN: 
        talking = False 
        viznet.client.sendAll(CHAT,client=viz.getComputerName(),chat=input.getMessage()[2:-1]) 
        input.visible(0) 
    elif talking and key == viz.KEY_BACKSPACE: 
        if len(input.getMessage()) > 3: 
            input.message(input.getMessage()[:-2]+'_') 
    elif len(key) > 1: 
        return False 
    elif talking and 32 <= ord(key) <= 126: 
        input.message(input.getMessage()[:-1]+key+'_') 
viz.callback(viz.KEYDOWN_EVENT,onKeyDown,priority=-6)
Reply With Quote