toontown-just-works/toontown/coghq/RenderingEntity.py

72 lines
2.5 KiB
Python
Raw Permalink Normal View History

2024-07-07 18:08:39 -05:00
from toontown.toonbase.ToontownGlobals import *
from direct.interval.IntervalGlobal import *
from direct.directnotify import DirectNotifyGlobal
from toontown.suit import GoonPathData
from otp.level import BasicEntities
class RenderingEntity(BasicEntities.NodePathEntity):
notify = DirectNotifyGlobal.directNotify.newCategory('PathMasterEntity')
def __init__(self, level, entId):
BasicEntities.NodePathEntity.__init__(self, level, entId)
if hasattr(self, 'colorR'):
self.setColorScale(self.colorR, self.colorG, self.colorB, self.colorA)
if hasattr(self, 'blending'):
self.setBlending(self.blending)
if hasattr(self, 'fogOn'):
self.setFogOn(self.fogOn)
def destroy(self):
BasicEntities.NodePathEntity.destroy(self)
def setColorR(self, newColor):
self.colorR = newColor
self.setColorScale(self.colorR, self.colorG, self.colorB, self.colorA)
def setColorG(self, newColor):
self.colorG = newColor
self.setColorScale(self.colorR, self.colorG, self.colorB, self.colorA)
def setColorB(self, newColor):
self.colorB = newColor
self.setColorScale(self.colorR, self.colorG, self.colorB, self.colorA)
def setColorA(self, newColor):
self.colorA = newColor
self.setColorScale(self.colorR, self.colorG, self.colorB, self.colorA)
def setColorScale(self, R, G, B, A):
BasicEntities.NodePathEntity.setColorScale(self, R, G, B, A)
self.chooseBin()
self.setBlending(self.blending)
def chooseBin(self):
if not hasattr(self, 'renderBin'):
self.renderBin = 'default'
self.setBin(self.renderBin, 0)
def setBlending(self, blending):
self.blending = blending
if blending == 'Additive':
self.setAttrib(ColorBlendAttrib.make(ColorBlendAttrib.MAdd))
self.setDepthWrite(False)
elif blending == 'Alpha':
self.setAttrib(ColorBlendAttrib.make(ColorBlendAttrib.MNone))
self.setDepthWrite(True)
self.setTransparency(1)
else:
self.setAttrib(ColorBlendAttrib.make(ColorBlendAttrib.MNone))
self.setDepthWrite(True)
self.setTransparency(0)
self.chooseBin()
def setFogOn(self, fog):
self.fogOn = fog
if self.fogOn:
myFog = Fog('Fog Rendering Fog of Rendering')
myFog.setColor(1.0, 0.0, 0.0)
myFog.setExpDensity(0.5)
self.setFog(myFog)
else:
self.clearFog()