def __init__(self): PooledEffect.__init__(self) self.taskName = None self.u = 0.0 self.pastForwardVelocity = [] self.pastRotationalVelocity = [] self.wake = Actor.Actor('models/sea/wake_zero', { 'still': 'models/sea/wake_still' }) self.wake.hide(OTPRender.MainCameraBitmask) self.wake.showThrough(OTPRender.EnviroCameraBitmask) self.bend = self.wake.controlJoint(None, 'modelRoot', 'def_wake_2') self.wake.controlJoint(self.bend, 'modelRoot', 'def_wake_3') self.wake.controlJoint(self.bend, 'modelRoot', 'def_wake_4') self.wake.loop('still') self.bowWave = NodePath('bowWave') if hasattr(base, 'pe'): spn = SeaPatchNode('spn', base.pe.seaPatch.patch) else: spn = SeaPatchNode('spn', base.cr.activeWorld.getWater().patch) spn.setWantColor(0) spn.setWantUv(0) spn.setWantNormal(0) spn.setWantReflect(0) self.spNP = self.wake.getGeomNode().getChild(0).attachNewNode(spn) self.wake.find('**/wake1').reparentTo(self.spNP) self.wake.find('**/wake2').reparentTo(self.spNP) spn.collectGeometry() self.use_water_bin = True self.use_depth_offset = False if self.use_water_bin: self.spNP.setBin('water', 9) if self.use_depth_offset: depth_offset = DepthOffsetAttrib.make(5) self.spNP.setAttrib(depth_offset) else: self.wake.setBin('ground', -7) self.bowWave.setBin('fixed', 0) self.spNP.setBin('ground', -5) if self.use_depth_offset: pass 1 self.spNP.setDepthTest(0) self.wake.setAttrib(ColorWriteAttrib.make(ColorWriteAttrib.CRed | ColorWriteAttrib.CGreen | ColorWriteAttrib.CBlue)) if hasattr(base, 'pe'): spn.setEffect(CompassEffect.make(base.pe.seaPatch.patchNP, CompassEffect.PZ)) else: spn.setEffect(CompassEffect.make(base.cr.activeWorld.getWater().patchNP, CompassEffect.PZ)) if self.use_water_bin: mask = 0xFFFFFFFFL stencil = StencilAttrib.make(1, StencilAttrib.SCFEqual, StencilAttrib.SOKeep, StencilAttrib.SOKeep, StencilAttrib.SOKeep, 1, mask, mask) self.spNP.setAttrib(stencil) if not base.useStencils: self.spNP.hide() self.shadow = None
def __init__(self, name, shadow_model, parent, use_water_bin=True, bin_number=7): self.name = name self.use_water_bin = use_water_bin self.bin_number = bin_number self.shadow_model = shadow_model if self.shadow_model: self.shadow_model.hide(OTPRender.MainCameraBitmask) self.shadow_model.showThrough(OTPRender.EnviroCameraBitmask) if hasattr(base, 'pe'): shadow_spn = SeaPatchNode('water_shadow_spn', base.pe.seaPatch.patch) else: shadow_spn = SeaPatchNode('water_shadow_spn', base.cr.activeWorld.getWater().patch) shadow_spn.setWantColor(0) shadow_spn.setWantUv(0) shadow_spn.setWantNormal(0) shadow_spn.setWantReflect(0) NodePath.__init__(self, shadow_spn) self.shadow_model.reparentTo(self) shadow_spn.collectGeometry() if self.use_water_bin: self.setBin('water', self.bin_number) self.setDepthWrite(0) else: self.setBin('ground', -2) self.setDepthTest(0) self.setLightOff() self.reparentTo(parent) OTPRender.renderReflection(False, self, 'p_water_shadow', None) if hasattr(base, 'pe'): shadow_spn.setEffect( CompassEffect.make(base.pe.seaPatch.patchNP, CompassEffect.PZ)) else: shadow_spn.setEffect( CompassEffect.make(base.cr.activeWorld.getWater().patchNP, CompassEffect.PZ)) if self.use_water_bin: mask = 4294967295L stencil = StencilAttrib.make(1, StencilAttrib.SCFEqual, StencilAttrib.SOKeep, StencilAttrib.SOKeep, StencilAttrib.SOKeep, 1, mask, mask) self.setAttrib(stencil) if not base.useStencils: self.hide()
def __init__(self): PooledEffect.__init__(self) self.taskName = None self.u = 0.0 self.pastForwardVelocity = [] self.pastRotationalVelocity = [] self.wake = Actor.Actor('models/sea/wake_zero', {'still': 'models/sea/wake_still'}) self.wake.hide(OTPRender.MainCameraBitmask) self.wake.showThrough(OTPRender.EnviroCameraBitmask) self.bend = self.wake.controlJoint(None, 'modelRoot', 'def_wake_2') self.wake.controlJoint(self.bend, 'modelRoot', 'def_wake_3') self.wake.controlJoint(self.bend, 'modelRoot', 'def_wake_4') self.wake.loop('still') self.bowWave = NodePath('bowWave') if hasattr(base, 'pe'): spn = SeaPatchNode('spn', base.pe.seaPatch.patch) else: spn = SeaPatchNode('spn', base.cr.activeWorld.getWater().patch) spn.setWantColor(0) spn.setWantUv(0) spn.setWantNormal(0) spn.setWantReflect(0) self.spNP = self.wake.getGeomNode().getChild(0).attachNewNode(spn) self.wake.find('**/wake1').reparentTo(self.spNP) self.wake.find('**/wake2').reparentTo(self.spNP) spn.collectGeometry() self.use_water_bin = True self.use_depth_offset = False if self.use_water_bin: self.spNP.setBin('water', 9) if self.use_depth_offset: depth_offset = DepthOffsetAttrib.make(5) self.spNP.setAttrib(depth_offset) else: self.wake.setBin('ground', -7) self.bowWave.setBin('fixed', 0) self.spNP.setBin('ground', -5) if self.use_depth_offset: pass else: self.spNP.setDepthTest(0) self.wake.setAttrib(ColorWriteAttrib.make(ColorWriteAttrib.CRed | ColorWriteAttrib.CGreen | ColorWriteAttrib.CBlue)) if hasattr(base, 'pe'): spn.setEffect(CompassEffect.make(base.pe.seaPatch.patchNP, CompassEffect.PZ)) else: spn.setEffect(CompassEffect.make(base.cr.activeWorld.getWater().patchNP, CompassEffect.PZ)) if self.use_water_bin: mask = 4294967295L stencil = StencilAttrib.make(1, StencilAttrib.SCFEqual, StencilAttrib.SOKeep, StencilAttrib.SOKeep, StencilAttrib.SOKeep, 1, mask, mask) self.spNP.setAttrib(stencil) if not base.useStencils: self.spNP.hide() self.shadow = None return
def __init__(self, name, shadow_model, parent, use_water_bin = True, bin_number = 7): self.name = name self.use_water_bin = use_water_bin self.bin_number = bin_number self.shadow_model = shadow_model if self.shadow_model: self.shadow_model.hide(OTPRender.MainCameraBitmask) self.shadow_model.showThrough(OTPRender.EnviroCameraBitmask) if hasattr(base, 'pe'): shadow_spn = SeaPatchNode('water_shadow_spn', base.pe.seaPatch.patch) else: shadow_spn = SeaPatchNode('water_shadow_spn', base.cr.activeWorld.getWater().patch) shadow_spn.setWantColor(0) shadow_spn.setWantUv(0) shadow_spn.setWantNormal(0) shadow_spn.setWantReflect(0) NodePath.__init__(self, shadow_spn) self.shadow_model.reparentTo(self) shadow_spn.collectGeometry() if self.use_water_bin: self.setBin('water', self.bin_number) self.setDepthWrite(0) else: self.setBin('ground', -2) self.setDepthTest(0) self.setLightOff() self.reparentTo(parent) OTPRender.renderReflection(False, self, 'p_water_shadow', None) if hasattr(base, 'pe'): shadow_spn.setEffect(CompassEffect.make(base.pe.seaPatch.patchNP, CompassEffect.PZ)) else: shadow_spn.setEffect(CompassEffect.make(base.cr.activeWorld.getWater().patchNP, CompassEffect.PZ)) if self.use_water_bin: mask = 0xFFFFFFFFL stencil = StencilAttrib.make(1, StencilAttrib.SCFEqual, StencilAttrib.SOKeep, StencilAttrib.SOKeep, StencilAttrib.SOKeep, 1, mask, mask) self.setAttrib(stencil) if not base.useStencils: self.hide()