ToonTownRewritten/toontown/building/DistributedAnimBuilding.py

50 lines
2 KiB
Python

from pandac.PandaModules import DecalEffect, DepthWriteAttrib
from direct.directnotify import DirectNotifyGlobal
from toontown.building import DistributedBuilding
class DistributedAnimBuilding(DistributedBuilding.DistributedBuilding):
def __init__(self, cr):
DistributedBuilding.DistributedBuilding.__init__(self, cr)
def enterToon(self, ts):
DistributedBuilding.DistributedBuilding.enterToon(self, ts)
self.fixEffects()
def fixEffects(self):
nodes = self.getNodePaths()
for curNode in nodes:
mf = curNode.find('**/*mesh_front*')
sign_joint = curNode.find('**/sign_origin_joint')
if not sign_joint.isEmpty():
self.notify.debug('I found sign_origin_joint 1')
if not mf.isEmpty():
sign = mf.find('**/sign')
mf.clearEffect(DecalEffect.getClassType())
if not sign.isEmpty():
sign.setDepthWrite(1, 1)
sign.setEffect(DecalEffect.make())
sign_joint = curNode.find('**/sign_origin_joint')
allSignJoints = curNode.findAllMatches('**/sign_origin_joint')
num = allSignJoints.getNumPaths()
if num:
sign_joint = allSignJoints.getPath(num - 1)
if not sign_joint.isEmpty():
self.notify.debug('I found sign_origin_joint 2')
sign.wrtReparentTo(sign_joint)
def setupNametag(self):
if not self.wantsNametag():
return
DistributedBuilding.DistributedBuilding.setupNametag(self)
def getSbSearchString(self):
result = 'landmarkBlocks/sb' + str(self.block) + ':*animated_building_*_DNARoot'
return result
def adjustSbNodepathScale(self, nodePath):
nodePath.setScale(0.543667, 1, 1)
def animToToon(self, timeStamp):
DistributedBuilding.DistributedBuilding.animToToon(self, timeStamp)
self.fixEffects()