예제 #1
0
    def _createMapTextureCard(self):
        mapImage = PNMImage(MAP_RESOLUTION, MAP_RESOLUTION)
        mapImage.fill(*self._bgColor)
        fgColor = VBase4F(*self._fgColor)
        for x in range(self._mazeHeight):
            for y in range(self._mazeWidth):
                if self._mazeCollTable[y][x] == 1:
                    ax = float(x) / self._mazeWidth * MAP_RESOLUTION
                    invertedY = self._mazeHeight - 1 - y
                    ay = float(invertedY) / self._mazeHeight * MAP_RESOLUTION
                    self._drawSquare(mapImage, int(ax), int(ay), 10, fgColor)

        mapTexture = Texture('mapTexture')
        mapTexture.setupTexture(Texture.TT2dTexture, self._maskResolution, self._maskResolution, 1, Texture.TUnsignedByte, Texture.FRgba)
        mapTexture.setMinfilter(Texture.FTLinear)
        mapTexture.load(mapImage)
        mapTexture.setWrapU(Texture.WMClamp)
        mapTexture.setWrapV(Texture.WMClamp)
        mapImage.clear()
        del mapImage
        cm = CardMaker('map_cardMaker')
        cm.setFrame(-1.0, 1.0, -1.0, 1.0)
        map = self.attachNewNode(cm.generate())
        map.setTexture(mapTexture, 1)
        return map
예제 #2
0
 def _revealSmoothCircle(self, x, y, center):
     length = (Vec2(x, y) - center).length()
     goalAlpha = max(0.0, length / float(self._radius) - 0.5)
     self._maskImage.setXelA(
         x, y,
         VBase4F(0.0, 0.0, 0.0,
                 min(self._maskImage.getAlpha(x, y), goalAlpha * 2.0)))
예제 #3
0
 def _revealSquare(self, x, y, center):
     self._maskImage.setXelA(x, y, VBase4F(0, 0, 0, 0))
예제 #4
0
 def _revealHardCircle(self, x, y, center):
     length = (Vec2(x, y) - center).length()
     if length <= self._radius:
         self._maskImage.setXelA(x, y, VBase4F(0, 0, 0, 0))