This fixes the issue in which python nodes reused in multiple pages
won't get properly exported. The exporter doesn't store which page a
node was exported to, and the "optimization" to prevent dupe python
parameters was over-optimizing in the case of multiple pages. Trivial
attempts to track the pages we exported to failed, so we'll fall back to
checking the PFM's filename. If it's None, then obviously the PFM has
not been exported...
Explanation: The JPEG format in plMipmap does not have to be an actual
JPEG image, it can also hold an RLE bitmap. libHSPlasma currently does
not attempt to compress any images held as uncompressed data and marked
JPEG, rather, it exports them as RLE maps. Maybe a bit odd, but it
works. I guess.
This improves the panel layout and fixes the issue in which
`plShadowMaster` exported with `maxSize` == 0, causing crappy shadows
in PotS and generally no shadows in MOUL.
This fixes two bugs with empty node socket spawning:
- The first time an empty is spawned, the link is moved to the last
socket.
- Unlinking a socket in the middle of the group would cause that socket
to be the one that's empty. This isn't bad per-se, but with Responders
being ID-based, it could result in some confusion.
Previously, Korman exported cameras without the "Maintain LOS" flag
applied, allowing cameras to swing through geometry. In the token of
better defaults and easier to understand objects, all the tracking
options have been audited for clarity and their exporting to the correct
camera type.
Previously, reusing node trees required careful thought and
specification of specific nodes in the advanced logic modifier. This
tedious requirement has been removed in favor of ensuring that the nodes
themselves take into account whether or not they should generate and
attach plasma objects.
This fixes an issue in which responders would get "stuck" at the end if
the last message had callbacks AND the responder was not attached to a
Python node.
Inspired by Unreal Blueprint's drag link+create list functionality. I
realize Blender has a few operators that do different parts of this job,
but they don't provide this well-polished functionality.
"Improve" is not quite the correct verbiage here because there were bugs
in the old code. The main issue is that any SceneObject with a
plPythonFileMod attached MUST have a CoordinateInterface attached,
otherwise the object would be invisible in game. Further, there were
some unreported oversights with regard to auto-generated modifiers that
have been fixed.
This isn't the best fix in the world. We don't really know what the user
did to cause the failure because of how abstract this code is. A proper
fix would be to ensure region modifiers can't get attached to non-mesh
objects. That won't fix already "broken" stuff in blend files without
being naughty/destructive, however.