mirror of
https://github.com/Sneed-Group/Poodletooth-iLand
synced 2024-12-24 04:02:40 -06:00
66 lines
2 KiB
Python
66 lines
2 KiB
Python
from panda3d.core import LVector4f, ModelNode
|
|
import DNANode
|
|
import DNAUtil
|
|
|
|
class DNAProp(DNANode.DNANode):
|
|
COMPONENT_CODE = 4
|
|
|
|
def __init__(self, name):
|
|
DNANode.DNANode.__init__(self, name)
|
|
self.code = ''
|
|
self.color = LVector4f(1, 1, 1, 1)
|
|
|
|
def getCode(self):
|
|
return self.code
|
|
|
|
def setCode(self, code):
|
|
self.code = code
|
|
|
|
def getColor(self):
|
|
return self.color
|
|
|
|
def setColor(self, color):
|
|
self.color = color
|
|
|
|
def smartFlatten(self, node):
|
|
if 'trolley' in self.name:
|
|
return
|
|
elif self.children:
|
|
node.flattenMedium()
|
|
elif 'HQTelescopeAnimatedProp' in self.name:
|
|
node.flattenMedium()
|
|
elif node.find('**/water1*').isEmpty():
|
|
node.flattenStrong()
|
|
elif not node.find('**/water').isEmpty():
|
|
water = node.find('**/water')
|
|
water.setTransparency(1)
|
|
water.setColor(1, 1, 1, 0.8)
|
|
node.flattenStrong()
|
|
elif not node.find('**/water1*').isEmpty():
|
|
water = node.find('**/water1*')
|
|
water.setTransparency(1)
|
|
water.setColorScale(1.0, 1.0, 1.0, 1.0)
|
|
water.setBin('water', 51, 1)
|
|
node.flattenStrong()
|
|
|
|
def makeFromDGI(self, dgi):
|
|
DNANode.DNANode.makeFromDGI(self, dgi)
|
|
self.code = DNAUtil.dgiExtractString8(dgi)
|
|
self.color = DNAUtil.dgiExtractColor(dgi)
|
|
|
|
def traverse(self, nodePath, dnaStorage):
|
|
if self.code == 'DCS':
|
|
node = ModelNode(self.name)
|
|
node.setPreserveTransform(ModelNode.PTNet)
|
|
node = nodePath.attachNewNode(node)
|
|
else:
|
|
node = dnaStorage.findNode(self.code)
|
|
if node is None:
|
|
return
|
|
node = node.copyTo(nodePath, 0)
|
|
node.setPosHprScale(self.pos, self.hpr, self.scale)
|
|
node.setName(self.name)
|
|
node.setColorScale(self.color, 0)
|
|
#self.smartFlatten(node)
|
|
for child in self.children:
|
|
child.traverse(node, dnaStorage)
|