jMonkeyEngine/jmonkeyengine

Remove SingleLayerInfluenceMask due to Serialization Issues and Dependency Conflicts. A Custom Solution Not Suited for Core

Opened this issue · 2 comments

The recent change to ArmatureMask implementing Savable has caused an issue with SingleLayerInfluenceMask (which extends ArmatureMask) serialization.
Due to its dependencies on AnimControl and SkinningControl, serialization is now impossible and the class exhibits inconsistent behavior.

Given its reliance on these external controls and potential for conflicts, I believe SingleLayerInfluenceMask is a custom solution best suited for specific needs. Its presence in the jME engine core can lead to maintenance issues and hinder the future evolution of animation base classes.

We recommend its removal from the jME engine core.
NOTE: this class was introduced in the latest 3.7.0-stable release.

https://github.com/jMonkeyEngine/jmonkeyengine/blob/master/jme3-core/src/main/java/com/jme3/anim/SingleLayerInfluenceMask.java#L42

Hmm, that's a shame. I think it is a particularly useful class. Perhaps this would work, along with some documentation?

@Override
public void write(JmeExporter ex) throws IOException {
    throw new UnsupportedOperationException("Read/write not supported.");
}
@Override
public void read(JmeImporter im) throws IOException {
    throw new UnsupportedOperationException("Read/write not supported.");
}

If not, I can move SingleLayerInfluenceMask to a utility library.

Personally, I do not think this is an acceptable solution. This class is not necessary for the proper functioning of the engine. It is a utility class and should be in an external library.

To maintain flexibility and avoid potential conflicts, I propose that SingleLayerInfluenceMask be moved to an external library. This would allow for more focused development and maintenance, while also preserving its accessibility for those who find it useful.