Example #1
0
    def initializeDropShadow(self, hasGeomNode=True):
        """
        Load up and arrange the drop shadow
        """
        assert self.notify.debugStateCall(self)
        # First, protect this function from being called twice by
        # removing the old ones first.
        self.deleteDropShadow()

        # This will be used by the shadow system to identify things
        # that might want to have projected shadows drawn.
        if hasGeomNode:
            self.getGeomNode().setTag('cam', 'caster')

        # make the object float above the shadow slightly
        # not necessarily a good idea for all avatars
        # self.getGeomNode().setZ(0.025)

        # load and prep the drop shadow
        dropShadow = loader.loadModel(self.shadowFileName)
        dropShadow.setScale(
            0.4)  # Slightly smaller to compensate for billboard

        dropShadow.flattenMedium()
        dropShadow.setBillboardAxis(2)  # slide the shadow towards the camera
        dropShadow.setColor(
            0.0, 0.0, 0.0, globalDropShadowGrayLevel, 1
        )  # override of 1 to prevent avatar.setColor() from affecting shadows.
        self.shadowPlacer = ShadowPlacer(base.shadowTrav, dropShadow,
                                         OTPGlobals.WallBitmask,
                                         OTPGlobals.FloorBitmask)
        self.dropShadow = dropShadow
        if not globalDropShadowFlag:
            self.dropShadow.hide()
        if self.getShadowJoint():
            dropShadow.reparentTo(self.getShadowJoint())
        else:
            self.dropShadow.hide()

        # Set the state of the shadow placers (in case someone set the
        # value before now):
        self.setActiveShadow(self.wantsActive)

        self.__globalDropShadowFlagChanged()
        self.__globalDropShadowGrayLevelChanged()
 def initializeDropShadow(self, hasGeomNode = True):
     self.deleteDropShadow()
     if hasGeomNode:
         self.getGeomNode().setTag('cam', 'caster')
     dropShadow = loader.loadModel(self.shadowFileName)
     dropShadow.setScale(0.4)
     dropShadow.flattenMedium()
     dropShadow.setBillboardAxis(2)
     dropShadow.setColor(0.0, 0.0, 0.0, globalDropShadowGrayLevel, 1)
     self.shadowPlacer = ShadowPlacer(base.shadowTrav, dropShadow, OTPGlobals.WallBitmask, OTPGlobals.FloorBitmask)
     self.dropShadow = dropShadow
     if not globalDropShadowFlag:
         self.dropShadow.hide()
     if self.getShadowJoint():
         dropShadow.reparentTo(self.getShadowJoint())
     else:
         self.dropShadow.hide()
     self.setActiveShadow(self.wantsActive)
     self.__globalDropShadowFlagChanged()
     self.__globalDropShadowGrayLevelChanged()
Example #3
0
    def __init__(self, cr):
        self.cr = cr
        DistributedSmoothNode.__init__(self, cr)
        NodePath.__init__(self, 'Mickey')
        self.name = "Mickey"
        self.anim = ""
        self.chat = ""

        self.mickey = Actor(
            "phase_3/models/char/mickey-1200.bam", {
                "neutral": "phase_3/models/char/mickey-wait.bam",
                "walk": "phase_3/models/char/mickey-walk.bam",
                "run": "phase_3/models/char/mickey-run.bam",
                "left-start": "phase_3.5/models/char/mickey-left-start.bam",
                "left": "phase_3.5/models/char/mickey-left.bam",
                "right-start": "phase_3.5/models/char/mickey-right-start.bam",
                "right": "phase_3.5/models/char/mickey-right.bam"
            })
        self.mickeyEye = self.mickey.controlJoint(None, "modelRoot",
                                                  "joint_pupilR")
        self.mickeyEye.setY(0.025)
        self.mickey.reparentTo(self)
        self.mickey.setScale(1.25)

        for bundle in self.mickey.getPartBundleDict().values():
            bundle = bundle['modelRoot'].getBundle()
            earNull = bundle.findChild('sphere3')
            if not earNull:
                earNull = bundle.findChild('*sphere3')
            earNull.clearNetTransforms()

        for bundle in self.mickey.getPartBundleDict().values():
            charNodepath = bundle['modelRoot'].partBundleNP
            bundle = bundle['modelRoot'].getBundle()
            earNull = bundle.findChild('sphere3')
            if not earNull:
                earNull = bundle.findChild('*sphere3')
            ears = charNodepath.find('**/sphere3')
            if ears.isEmpty():
                ears = charNodepath.find('**/*sphere3')
            ears.clearEffect(CharacterJointEffect.getClassType())
            earRoot = charNodepath.attachNewNode('earRoot')
            earPitch = earRoot.attachNewNode('earPitch')
            earPitch.setP(40.0)
            ears.reparentTo(earPitch)
            earNull.addNetTransform(earRoot.node())
            ears.clearMat()
            ears.node().setPreserveTransform(ModelNode.PTNone)
            ears.setP(-40.0)
            ears.flattenMedium()
            ears.setBillboardAxis()

        self.shadow = loader.loadModel("phase_3/models/props/drop_shadow.bam")
        self.shadow.setScale(0.55)
        self.shadow.flattenMedium()
        self.shadow.setBillboardAxis(4)
        try:
            self.shadowPlacer = ShadowPlacer(base.cTrav, self.shadow,
                                             base.wall_mask, base.floor_mask)
            self.shadowPlacer.on()
        except:
            pass
        self.shadow.reparentTo(self)

        cs = CollisionSphere(0, 0, 0, 2)
        cnode = CollisionNode('mickeyCNode')
        cnode.addSolid(cs)
        rs = CollisionRay(0, 0, 2, 0, 0, -1)
        rnode = CollisionNode('mickeyRNode')
        rnode.addSolid(rs)
        self.cnp = self.attachNewNode(cnode)
        self.cnp.setZ(0.75)
        self.rnp = self.attachNewNode(rnode)