Poodletooth-iLand/toontown/dna/DNAStreet.py

122 lines
4 KiB
Python
Raw Normal View History

2015-03-03 16:10:12 -06:00
from panda3d.core import LVector4f
import DNANode
import DNAError
import DNAUtil
class DNAStreet(DNANode.DNANode):
COMPONENT_CODE = 19
def __init__(self, name):
DNANode.DNANode.__init__(self, name)
self.code = ''
self.streetTexture = ''
self.sideWalkTexture = ''
self.curbTexture = ''
self.streetColor = LVector4f(1, 1, 1, 1)
self.sidewalkColor = LVector4f(1, 1, 1, 1)
self.curbColor = LVector4f(1, 1, 1, 1)
self.setTexCnt = 0
self.setColCnt = 0
def setCode(self, code):
self.code = code
def getCode(self):
return self.code
def setStreetTexture(self, texture):
self.streetTexture = texture
def getStreetTexture(self):
return self.streetTexture
def setSidewalkTexture(self, texture):
self.sidewalkTexture = texture
def getSidewalkTexture(self):
return self.sidewalkTexture
def setCurbTexture(self, texture):
self.curbTexture = texture
def getCurbTexture(self):
return self.curbTexture
def setStreetColor(self, color):
self.streetColor = color
def getStreetColor(self):
return self.streetColor
def setSidewalkColor(self, color):
self.SidewalkColor = color
def getSidewalkColor(self):
return self.sidewalkColor
def getCurbColor(self):
return self.curbColor
def setTextureColor(self, color):
self.Color = color
def setTexture(self, texture):
if self.setTexCnt == 0:
self.streetTexture = texture
if self.setTexCnt == 1:
self.sidewalkTexture = texture
if self.setTexCnt == 2:
self.curbTexture = texture
self.setTexCnt += 1
def setColor(self, color):
if self.setColCnt == 0:
self.streetColor = color
if self.setColCnt == 1:
self.sidewalkColor = color
if self.setColCnt == 2:
self.curbColor = color
self.setColCnt += 1
def makeFromDGI(self, dgi):
DNANode.DNANode.makeFromDGI(self, dgi)
self.code = DNAUtil.dgiExtractString8(dgi)
self.streetTexture = DNAUtil.dgiExtractString8(dgi)
self.sidewalkTexture = DNAUtil.dgiExtractString8(dgi)
self.curbTexture = DNAUtil.dgiExtractString8(dgi)
self.streetColor = DNAUtil.dgiExtractColor(dgi)
self.sideWalkColor = DNAUtil.dgiExtractColor(dgi)
self.curbColor = DNAUtil.dgiExtractColor(dgi)
def traverse(self, nodePath, dnaStorage):
node = dnaStorage.findNode(self.code)
if node is None:
raise DNAError.DNAError('DNAStreet code ' + self.code + ' not found in DNAStorage')
nodePath = node.copyTo(nodePath, 0)
node.setName(self.getName())
streetTexture = dnaStorage.findTexture(self.streetTexture)
sidewalkTexture = dnaStorage.findTexture(self.sidewalkTexture)
curbTexture = dnaStorage.findTexture(self.curbTexture)
if streetTexture is None:
raise DNAError.DNAError('street texture not found in DNAStorage : ' + self.streetTexture)
if sidewalkTexture is None:
raise DNAError.DNAError('sidewalk texture not found in DNAStorage : ' + self.sidewalkTexture)
if curbTexture is None:
raise DNAError.DNAError('curb texture not found in DNAStorage : ' + self.curbTexture)
streetNode = nodePath.find('**/*_street')
sidewalkNode = nodePath.find('**/*_sidewalk')
curbNode = nodePath.find('**/*_curb')
if not streetNode.isEmpty():
streetNode.setTexture(streetTexture, 1)
streetNode.setColorScale(self.streetColor, 0)
if not sidewalkNode.isEmpty():
sidewalkNode.setTexture(sidewalkTexture, 1)
sidewalkNode.setColorScale(self.sidewalkColor, 0)
if not curbNode.isEmpty():
curbNode.setTexture(curbTexture, 1)
curbNode.setColorScale(self.curbColor, 0)
nodePath.setPosHprScale(self.getPos(), self.getHpr(), self.getScale())
nodePath.flattenStrong()