예제 #1
0
class PlayerName():
    
    def __init__(self, name, parentNode):
        self.parentNode = parentNode
        
        self.nameTextNode = TextNode('nameTextNode')
        self.nameTextNode.setText(name)
        self.nameTextNode.setTextColor(Globals.COLOR_WHITE)
        self.nameTextNode.setShadow(0.05, 0.05)
        self.nameTextNode.setShadowColor(Globals.COLOR_WHITE)
        self.nameTextNode.set_align(TextNode.ACenter)
        self.nameTextNodeTextPath = aspect2d.attachNewNode(self.nameTextNode)
        self.nameTextNodeTextPath.setScale(Settings.CHAT_HEIGHT)
        
        self.hidden = True
        self.nameTextNodeTextPath.hide()
        self.fadeSeq = Sequence(LerpColorScaleInterval(self.nameTextNodeTextPath, 1, Globals.COLOR_TRANSPARENT),
                                Func(self.nameTextNodeTextPath.hide))
        
        self.reshowOnInView = False
    
    def SetColor(self, color):
        self.nameTextNode.setTextColor(color)
    
    def IsHidden(self):
        return self.hidden
    
    def FadeOut(self):
        #print 'fo'
        if(not self.IsHidden()):
            #print 'really fo'
            self.hidden = True
            self.fadeSeq.start()
            
    def Hide(self):
        self.nameTextNodeTextPath.hide()
        self.hidden = True
    
    def Show(self):
        if(self.IsHidden()):
            if(self.fadeSeq.isPlaying()):
                self.fadeSeq.finish()
                
            self.nameTextNodeTextPath.show()
            self.nameTextNodeTextPath.setColorScale(Globals.COLOR_WHITE)
            self.hidden = False
            #print 'really show'
            
        
    def Update(self):
        self.nameTextNodeTextPath.setPos(Camera.Coord3dTo2d(self.parentNode))
             
        # If the node is visible
        if(base.camNode.isInView(self.parentNode.getPos(base.cam))):
            if(self.IsHidden() and self.reshowOnInView):
                self.Show()
        else:
            if(not self.IsHidden()):
                self.Hide()