ID:2127915
 
Applies to:
Status: Open

Issue hasn't been assigned a status value.
Hi there! In the same vein as ID:1870524, we now have the ability to selective make all things on a plane invisible to one person. Unfortunately, we lack the reverse functionality and I'll explain why you cant do that functionally right now.

What we need: Plane masters to have a default invisibility value of FLOAT_INVISIBILITY, but when set to one of the standard values of invisibility to override the invisibility of all objects on the plane to draw them and show them to the viewer.

Why we need it: Plane masters can use alpha to make anything invisible using alpha quite effectively. However they do NOT work with the reverse.

The reason for this is a rather simple. If you increase the alpha value of a plane master by a constant value, due to the fact it draws over the entire screen at once it will begin to obscure things behind the plane master, and using a color matrix to add 255 alpha to the plane master will cause it to become completely opaque and hide the entire screen. (Lots of alpha settings with plane masters other than setting alpha to 0 are extremely questionable functionally). You could use ra, ba, and ga to set alpha to 255 quite reliably on any pixel with ra, ba, or ga > 0, but this is an extremely selective feature since it only supports full alpha.

Being able to set invisibility directly allows us freedom to do whatever invisibility effects we need more naturally without hacking through the way plane masters use the color matrix.

Why it should be easy/could be hard: Since plane masters sort everything together onto the same plane and draw them all at once, in an ideal world it seems like it should be easier to override all their invisibilities at once. Unfortunately it is equally as likely that invisibility is sorted well before plane masters come into play and thus this request would be difficult to fulfill.

Use cases: I want to make a set of mobs half transparent and visible to one another but to no one else for a particular effect. The reason I can't simply use an image for this is that I would need to make an update system so that the appearance continually matches the appearance of each mob. I place them all on a special plane and give them 50% alpha, setting their invisibility above the see_invisible of all other mobs. I place a plane master screen image in their images and override invisibility so that they can all see one another.
I don't think this is really an appropriate use of planes; I know it's a workaround to implement so-called "invisibility groups" (although it doesn't solve verb accessibility), but planes are really meant for layering and post-processing purposes. It's not the right tool for the job. I'll grant however that there is no right tool at the moment.

For similar reasons I don't think invisibility is the right tool for this either. Invisibility is simply a pass/fail that affects the entire atom, including all of its overlays.

Of course that being said, I think your current plane workaround could be made to work simply enough just by making a plane_master with alpha=0, and creating an override image with alpha=128 for the users who can see it.
Not sure if mouse_opacity works on the plane master itself, but setting alpha = 0 on a plane can still be recognized by the mouse for the objects on the plane.
@Lummox: If you can make things invisible with a planemaster, I think you should also be able to make things visible. Just my point of view.
Come to think of it, is it weird that a constant alpha (ca part of color matrix) of 1 (setting alpha = 255) makes icons with r,g,b = 0 opaque in the first place? Right now when you look at an icon that has added a constant alpha, all areas with r,g,b = 0 act like they have r,g,b = 255.
Adding alpha so that it ends up greater than 1 produces inconsistent results, depending on the video card.