Limits patches LightSource#_createPolygon too. Because of the wrapper registration order EV's _createPolygon wrapper wraps around Limits' wrapper and therefore discards the constraint applied to the shape by Limits if Full Shadow Penumbra is enabled. If the wrapper order were the other way around, it would throw an error, because EV's _createPolygon doesn't return a PointSourcePolygon as documented. Limits expects a PointSourcePolygon. If EV patched _getPolygonConfiguration instead of _createPolygon, both problems (order and return type) would be solved. I quickly tested it, and it seemed to work well. The originalShape property is no longer set, but it seemed to be unused anyway.
function _getPolygonConfiguration(wrapped) {
const config = wrapped();
if ( getSetting(SETTINGS.LIGHTS_FULL_PENUMBRA) ) {
config.type = "universal";
}
return config;
}
Thanks! Fixed in v0.5.8. I forgot that "universal" was a config option, which simplifies things a bit. Presumably Limits is ignoring EV's directional lights, as those also wrap _createPolygon.
Limits patches
LightSource#_createPolygon
too. Because of the wrapper registration order EV's_createPolygon
wrapper wraps around Limits' wrapper and therefore discards the constraint applied to the shape by Limits if Full Shadow Penumbra is enabled. If the wrapper order were the other way around, it would throw an error, because EV's_createPolygon
doesn't return aPointSourcePolygon
as documented. Limits expects aPointSourcePolygon
. If EV patched_getPolygonConfiguration
instead of_createPolygon
, both problems (order and return type) would be solved. I quickly tested it, and it seemed to work well. TheoriginalShape
property is no longer set, but it seemed to be unused anyway.dev7355608/limits#4