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
Exemplo n.º 2
0
    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()
Exemplo n.º 3
0
    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()