Poodletooth-iLand/otp/otpbase/OTPRender.py

47 lines
1.9 KiB
Python

from panda3d.core import *
MainCameraBitmask = BitMask32.bit(0)
ReflectionCameraBitmask = BitMask32.bit(1)
ShadowCameraBitmask = BitMask32.bit(2)
SkyReflectionCameraBitmask = BitMask32.bit(3)
GlowCameraBitmask = BitMask32.bit(4)
def setCameraBitmask(default, node_path, camera_bitmask, tag = None, tag_function = None, context = None):
if node_path:
show = default
if tag_function:
show = tag_function(default, tag, context)
if show:
node_path.show(camera_bitmask)
else:
node_path.hide(camera_bitmask)
def renderReflection(default, node_path, tag = None, tag_function = None, context = None):
setCameraBitmask(default, node_path, ReflectionCameraBitmask, tag, tag_function, context)
def renderShadow(default, node_path, tag = None, tag_function = None, context = None):
setCameraBitmask(default, node_path, ShadowCameraBitmask, tag, tag_function, context)
def renderSkyReflection(default, node_path, tag = None, tag_function = None, context = None):
setCameraBitmask(default, node_path, SkyReflectionCameraBitmask, tag, tag_function, context)
def renderGlow(default, node_path, tag = None, tag_function = None, context = None):
setCameraBitmask(default, node_path, GlowCameraBitmask, tag, tag_function, context)
def setAdditiveEffect(node_path, tag = None, bin_name = None, lighting_on = False, reflect = False):
if node_path:
node_path.setTransparency(True)
node_path.setDepthWrite(False)
node_path.node().setAttrib(ColorBlendAttrib.make(ColorBlendAttrib.MAdd))
if lighting_on == False:
node_path.setLightOff()
node_path.setAttrib(ColorWriteAttrib.make(ColorWriteAttrib.CRed | ColorWriteAttrib.CGreen | ColorWriteAttrib.CBlue))
if reflect == False:
renderReflection(False, node_path, tag, None)
if bin_name:
node_path.setBin(bin_name, 0)
return