info_logic_inopen allows mappers to create logic gates in a way that uses fewer entities, without resorting to map hacks, and with higher levels of reliability than traditional arrangements. The entity works like a trigger_relay with just one crucial difference. The entity will only fire its targets if the point at it’s origin is in the open – not currently occupied by any other solid entities.
We can create a logic gate most simply by using this in combination with a func_togglewall placed over the top of it. Making the togglewall solid opens the gate , and non-solid connects the circuit again. You can create an AND gate using two overlapping togglewalls – the circuit is only connected if both are non-solid. An OR gate can be made in a similar way, but using the sister entity class info_logic_insolid. Initialize the togglewalls to solid/non-solid as needed.
One of the advanced tricks with old logic gates was to create scale models of platforms, outside the map, and test if they had reached a particular height with a logic gate set-up involving spikeshooters. The non-intrusive nature of testing an info_logic_inopen means you don’t need a scale version outside the map; you can directly test if your platform has reached a particular height – which responds better if the platform is blocked. But beware that you might get false results if some entity other than the platform is sat atop the info_logic_inopen.
You can get the best of all worlds by adding an extra brush joined to the original platform, but positioned outside the level, and position the info_logic_inopen to test against that brush. Isolating the brush means that nothing else can be occupying the space, and because the brush is part of the same entity, it moves exactly in sync – including being blocked.