[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

Re: [pygame] Masking Test: Simulated Lighting (Follow-Up)



Kamilche wrote:
Try the following code. It uses a gradient light.

I'm trying to figure out how your example (much better than mine) works. It looks like the key is the last line of this function:


def RefreshNight(night, alpha, light, x, y):
a = NIGHTCOLOR[3]
alpha.fill([a, a, a])
r = LIGHTSIZE/2
alpha.blit(light, [x-r, y-r])
pygame.surfarray.pixels_alpha(night)[:, :] = pygame.surfarray.pixels2d(alpha)

So, to get around the problem of a pre-drawn lightmask not getting properly put onto the dark mask, you're using the surfarray module to address the alpha channel of the dark mask directly? Is that how this works? I don't recognize the [:,:] syntax -- a list containing two copies of a list, maybe.


I tried using a version of that line instead of directly blitting my lightmask onto dark, but Python complained that it couldn't safely cast the array. I guess there's some trick to how the surfaces are defined, but I haven't been able to figure it out yet.

Kris