def makePerspective(parent): v = Viewport('persp', parent) v.camPos = Point3(-19, -19, 19) v.camLookAt = Point3(0, 0, 0) v.grid = DirectGrid(parent=render) collPlane = CollisionNode('PerspGridCol') collPlane.addSolid(CollisionPlane(Plane(0, 0, 1, 0))) #oldBitmask = collPlane.getIntoCollideMask() #collPlane.setIntoCollideMask(BitMask32.bit(21)|oldBitmask) collPlane.setIntoCollideMask(BitMask32.bit(21)) v.collPlane = NodePath(collPlane) v.collPlane.reparentTo(v.grid) collPlane2 = CollisionNode('PerspGridCol2') collPlane2.addSolid(CollisionPlane(Plane(0, 0, -1, 0))) #oldBitmask = collPlane2.getIntoCollideMask() #collPlane2.setIntoCollideMask(BitMask32.bit(21)|oldBitmask) collPlane2.setIntoCollideMask(BitMask32.bit(21)) v.collPlane2 = NodePath(collPlane2) v.collPlane2.reparentTo(v.grid) #v.grid.gridBack.findAllMatches("**/+GeomNode")[0].setName("_perspViewGridBack") LE_showInOneCam(v.grid, 'persp') return v
def makeOrthographic(parent, name, campos): v = Viewport(name, parent) v.lens = OrthographicLens() v.lens.setFilmSize(30) v.camPos = campos v.camLookAt = Point3(0, 0, 0) v.grid = DirectGrid(parent=render) if name == 'left': v.grid.setHpr(0, 0, 90) collPlane = CollisionNode('LeftGridCol') collPlane.addSolid(CollisionPlane(Plane(1, 0, 0, 0))) collPlane.setIntoCollideMask(BitMask32.bit(21)) v.collPlane = NodePath(collPlane) v.collPlane.wrtReparentTo(v.grid) #v.grid.gridBack.findAllMatches("**/+GeomNode")[0].setName("_leftViewGridBack") LE_showInOneCam(v.grid, name) elif name == 'front': v.grid.setHpr(90, 0, 90) collPlane = CollisionNode('FrontGridCol') collPlane.addSolid(CollisionPlane(Plane(0, -1, 0, 0))) collPlane.setIntoCollideMask(BitMask32.bit(21)) v.collPlane = NodePath(collPlane) v.collPlane.wrtReparentTo(v.grid) #v.grid.gridBack.findAllMatches("**/+GeomNode")[0].setName("_frontViewGridBack") LE_showInOneCam(v.grid, name) else: collPlane = CollisionNode('TopGridCol') collPlane.addSolid(CollisionPlane(Plane(0, 0, 1, 0))) collPlane.setIntoCollideMask(BitMask32.bit(21)) v.collPlane = NodePath(collPlane) v.collPlane.reparentTo(v.grid) #v.grid.gridBack.findAllMatches("**/+GeomNode")[0].setName("_topViewGridBack") LE_showInOneCam(v.grid, name) return v
def SetupGrid(self): """Create the grid and set up its appearance.""" self.grid = DirectGrid(gridSize=20.0, gridSpacing=1.0, planeColor=(0.5, 0.5, 0.5, 0.0), parent=base.edRender) self.grid.snapMarker.hide() self.grid.centerLines.setColor((0, 0, 0, 0)) self.grid.centerLines.setThickness(2) self.grid.majorLines.setColor((0.25, 0.25, 0.25, 0)) self.grid.majorLines.setThickness(1) self.grid.minorLines.setColor((0.5, 0.5, 0.5, 0)) self.grid.updateGrid()
def __init__(self, parent): self.parent = parent self.elementHandler = None color = ( (0.8, 0.8, 0.8, 1), # Normal (0.9, 0.9, 1, 1), # Click (0.8, 0.8, 1, 1), # Hover (0.5, 0.5, 0.5, 1)) # Disabled # respect menu bar self.canvasScale = 1080 # min(base.getSize()[0], base.getSize()[1]) # we default to a 1920x1080 FHD screen self.canvasLeft = -1920/2 self.canvasRight = 1920/2 self.canvasTop = 1080/2 self.canvasBottom = -1080/2 self.visualEditor = DirectScrolledFrame( frameColor=(0.25, 0.25, 0.25, 1), canvasSize=(self.canvasLeft, self.canvasRight, self.canvasBottom, self.canvasTop), scrollBarWidth=20, # vertical scrollbar verticalScroll_value=0.5, verticalScroll_thumb_relief=DGG.FLAT, verticalScroll_incButton_relief=DGG.FLAT, verticalScroll_decButton_relief=DGG.FLAT, verticalScroll_thumb_frameColor=color, verticalScroll_incButton_frameColor=color, verticalScroll_decButton_frameColor=color, # horizontal scrollbar horizontalScroll_value=0.5, horizontalScroll_thumb_relief=DGG.FLAT, horizontalScroll_incButton_relief=DGG.FLAT, horizontalScroll_decButton_relief=DGG.FLAT, horizontalScroll_thumb_frameColor=color, horizontalScroll_incButton_frameColor=color, horizontalScroll_decButton_frameColor=color, ) self.scaleParent = DirectFrame( scale=(1,1,1) ) # store which base parent should be used for the elements self.currentVisEditorParent = base.aspect2d self.visEditorInAspect2D = True # Layouting self.sizer = DirectAutoSizer( updateOnWindowResize=False, parent=parent, child=self.visualEditor, ) # zoom scale self.minScale = DEFAULT_MIN_SCALE self.maxScale = DEFAULT_MAX_SCALE self.zoomInMultiplyer = 1.1 self.zoomOutMultiplyer = 0.9 # This frame will be the base parent for the added GUI elements self.elementHolder = DirectFrame( #frameColor=(0.25, 0.25, 0.25, 1), scale=LVecBase3f(self.canvasScale/2,1,self.canvasScale/2), parent=self.scaleParent ) self.elementHolder.bind(DGG.B1RELEASE, base.messenger.send, ["mouse3"]) # Ensure the holder frame will be streched to fill the parent self.scaleParentSizer = DirectAutoSizer( parent=self.visualEditor.canvas, child=self.scaleParent, parentGetSizeFunction=self.visualEditor.cget, parentGetSizeExtraArgs=["canvasSize"], ) self.elementHolderSizer = DirectAutoSizer( parent=self.scaleParent, child=self.elementHolder ) # The designers grid self.grid = DirectGrid(gridSize=50.0, gridSpacing=0.05,parent=self.elementHolder) self.grid.setP(90) self.grid.snapMarker.hide() self.snapToGrid = not self.grid.isHidden() self.canvasTopCenter = self.elementHolder.attachNewNode("canvasTopCenter") self.canvasBottomCenter = self.elementHolder.attachNewNode("canvasBottomCenter") self.canvasLeftCenter = self.elementHolder.attachNewNode("canvasLeftCenter") self.canvasRightCenter = self.elementHolder.attachNewNode("canvasRightCenter") self.canvasTopLeft = self.elementHolder.attachNewNode("canvasTopLeft") self.canvasTopRight = self.elementHolder.attachNewNode("canvasTopRight") self.canvasBottomLeft = self.elementHolder.attachNewNode("canvasBottomLeft") self.canvasBottomRight = self.elementHolder.attachNewNode("canvasBottomRight") # default to Aspect2D self.setVisualEditorParent(False) base.taskMgr.add(self.watchCanvasProps, "watch-canvas-properties", sort=50, priority=0)