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()
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)