From 91cb23abb014945ce883687807dce1e52861095f Mon Sep 17 00:00:00 2001 From: David Rose Date: Thu, 9 Feb 2012 22:35:08 +0000 Subject: [PATCH] oobeCull() also wants a cam argument --- direct/src/showbase/ShowBase.py | 44 ++++++++++++++------------------- 1 file changed, 18 insertions(+), 26 deletions(-) diff --git a/direct/src/showbase/ShowBase.py b/direct/src/showbase/ShowBase.py index 967cefb63f..8a914fd12d 100644 --- a/direct/src/showbase/ShowBase.py +++ b/direct/src/showbase/ShowBase.py @@ -2210,9 +2210,7 @@ class ShowBase(DirectObject.DirectObject): # If oobeMode was never set, set it to false and create the # structures we need to implement OOBE. - try: - self.oobeMode - except: + if not hasattr(self, 'oobeMode'): self.oobeMode = 0 self.oobeCamera = self.hidden.attachNewNode('oobeCamera') @@ -2227,12 +2225,15 @@ class ShowBase(DirectObject.DirectObject): self.oobe2cam.node().setNode(self.oobeCameraTrackball.node()) self.oobeVis = loader.loadModel('models/misc/camera', okMissing = True) + if not self.oobeVis: + # Sometimes we have default-model-extension set to + # egg, but the file might be a bam file. + self.oobeVis = loader.loadModel('models/misc/camera.bam', okMissing = True) if not self.oobeVis: self.oobeVis = NodePath('oobeVis') self.oobeVis.node().setFinal(1) self.oobeVis.setLightOff(1) self.oobeCullFrustum = None - self.oobeCullFrustumVis = None self.accept('oobe-down', self.__oobeButton, extraArgs = ['']) self.accept('oobe-repeat', self.__oobeButton, extraArgs = ['-repeat']) @@ -2242,7 +2243,7 @@ class ShowBase(DirectObject.DirectObject): # Disable OOBE mode. if self.oobeCullFrustum != None: # First, disable OOBE cull mode. - self.oobeCull() + self.oobeCull(cam = cam) if self.oobeVis: self.oobeVis.reparentTo(self.hidden) @@ -2313,48 +2314,39 @@ class ShowBase(DirectObject.DirectObject): # Transmit other buttons. messenger.send(button + suffix) - def oobeCull(self): + def oobeCull(self, cam = None): """ While in OOBE mode (see above), cull the viewing frustum as if it were still attached to our original camera. This allows us to visualize the effectiveness of our bounding volumes. """ # First, make sure OOBE mode is enabled. - try: - if not self.oobeMode: - self.oobe() - except: - self.oobe() + if not getattr(self, 'oobeMode', False): + self.oobe(cam = cam) if self.oobeCullFrustum == None: # Enable OOBE culling. pnode = LensNode('oobeCull') pnode.setLens(self.camLens) + pnode.showFrustum() self.oobeCullFrustum = self.camera.attachNewNode(pnode) - # Create a visible representation of the frustum. - geom = self.camLens.makeGeometry() - if geom != None: - gn = GeomNode('frustum') - gn.addGeom(geom) - self.oobeCullFrustumVis = self.oobeVis.attachNewNode(gn) - # Tell the camera to cull from here instead of its own # origin. - for cam in base.camList: - cam.node().setCullCenter(self.oobeCullFrustum) + for c in base.camList: + c.node().setCullCenter(self.oobeCullFrustum) + for c in cam.findAllMatches('**/+Camera'): + c.node().setCullCenter(self.oobeCullFrustum) else: # Disable OOBE culling. - for cam in base.camList: - cam.node().setCullCenter(NodePath()) + for c in base.camList: + c.node().setCullCenter(NodePath()) + for c in cam.findAllMatches('**/+Camera'): + c.node().setCullCenter(NodePath()) self.oobeCullFrustum.removeNode() self.oobeCullFrustum = None - if self.oobeCullFrustumVis != None: - self.oobeCullFrustumVis.removeNode() - self.oobeCullFrustumVis = None - def showCameraFrustum(self): # Create a visible representation of the frustum. self.removeCameraFrustum()