mirror of
https://github.com/Sneed-Group/Poodletooth-iLand
synced 2024-12-25 12:42:41 -06:00
122 lines
4 KiB
Python
122 lines
4 KiB
Python
|
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()
|