Ejemplo n.º 1
0
 def _doBillboard(self):
     if self.SHOULD_BILLBOARD:
         self.innerNP.setEffect(
             BillboardEffect.make(
                 Vec3(0, 0, 1),
                 True,
                 False,
                 self.billboardOffset,
                 NodePath(),  # Empty; look at scene camera
                 Point3(0, 0, 0)))
     else:
         self.billboardOffset = 0.0
    def setChatAbsolute(self, chatString=None):
        if not chatString or chatString.isspace() or len(chatString) == 0:
            return

        self.clearChat()
        self.taskId = random.randint(0, 1000000000000000000000000000000)
        if self.nameTag:
            self.getNameTag().hide()

        if self.isThought(chatString):
            chatString = self.removeThoughtPrefix(chatString)
            bubble = loader.loadModel(CIGlobals.ThoughtBubble)
        else:
            length = math.sqrt(len(chatString)) / self.LENGTH_FACTOR
            if length < self.MIN_LENGTH:
                length = self.MIN_LENGTH
            if length > self.MAX_LENGTH:
                length = self.MAX_LENGTH
            bubble = loader.loadModel(CIGlobals.ChatBubble)
            if self.autoClearChat:
                taskMgr.doMethodLater(
                    length, self.clearChatTask,
                    "clearAvatarChat-%s" % (str(self.taskId)))

        if self.avatarType == CIGlobals.Suit:
            font = CIGlobals.getSuitFont()
        else:
            font = CIGlobals.getToonFont()

        self.chatBubble = ChatBalloon(bubble).generate(chatString, font)
        self.chatBubble.setEffect(
            BillboardEffect.make(Vec3(0, 0, 1), True, False, 3.0, camera,
                                 Point3(0, 0, 0)))
        if self.nameTag:
            self.chatBubble.setZ(self.getNameTag().getZ())
        else:
            if self.avatarType == CIGlobals.Suit:
                nametagZ = self.suitPlan.getNametagZ()
                self.chatBubble.setZ(nametagZ)

        if self.avatar and hasattr(self.avatar, 'getGhost'):
            if not self.avatar.getGhost(
            ) or self.avatar.doId == base.localAvatar.doId:
                self.chatBubble.reparentTo(self)
        else:
            self.chatBubble.reparentTo(self)

        LabelScaler().resize(self.chatBubble)
Ejemplo n.º 3
0
 def doBillboardEffect(self):
     billboardEffect = BillboardEffect.make(
         Vec3(0, 0, 1), True, False, self.billboardOffset, base.cam,
         Point3(0, 0, 0))
     self.contents.setEffect(billboardEffect)
Ejemplo n.º 4
0
 def doBillboardEffect(self):
     billboardEffect = BillboardEffect.make(
         Vec3(0, 0, 1), True, False, self.billboardOffset, base.cam,
         Point3(0, 0, 0))
     self.contents.setEffect(billboardEffect)
Ejemplo n.º 5
0
 def apply(self, nodePath):
     effect = BillboardEffect.make(self.up_vector, self.eye_relative,
                                   self.axial_rotate, 0.0, NodePath(),
                                   LPoint3f(0, 0, 0))
     nodePath.setEffect(effect)