Trying to clone a node to explore cloning.
One of the controls is just a class extending BetterCharacterControl implementing ActionListener.
java.lang.ClassCastException: Cannot cast com.jme3.bullet.control.BetterCharacterControl to mygame.controls.PCControl
at java.lang.Class.cast(Class.java:3369)
at com.jme3.util.clone.Cloner.clone(Cloner.java:276)
at com.jme3.util.clone.Cloner.clone(Cloner.java:160)
at com.jme3.util.clone.ListCloneFunction.cloneFields(ListCloneFunction.java:66)
at com.jme3.util.clone.ListCloneFunction.cloneFields(ListCloneFunction.java:43)
at com.jme3.util.clone.Cloner.clone(Cloner.java:228)
at com.jme3.util.clone.Cloner.clone(Cloner.java:160)
at com.jme3.scene.Spatial.cloneFields(Spatial.java:1506)
at com.jme3.scene.Node.cloneFields(Node.java:723)
at com.jme3.util.clone.Cloner.clone(Cloner.java:255)
at com.jme3.util.clone.Cloner.clone(Cloner.java:160)
at com.jme3.scene.Spatial.clone(Spatial.java:1361)
at com.jme3.scene.Node.clone(Node.java:682)
at com.jme3.scene.Node.clone(Node.java:62)
at com.jme3.scene.Spatial.clone(Spatial.java:1449)
at mygame.appstates.PCState.cloneSpatialControl(PCState.java:122)
at mygame.appstates.PCState.onEnable(PCState.java:106)
at com.jme3.app.state.BaseAppState.initialize(BaseAppState.java:127)
at com.jme3.app.state.AppStateManager.initializePending(AppStateManager.java:251)
at com.jme3.app.state.AppStateManager.update(AppStateManager.java:281)
at com.jme3.app.SimpleApplication.update(SimpleApplication.java:236)
at com.jme3.system.lwjgl.LwjglAbstractDisplay.runLoop(LwjglAbstractDisplay.java:151)
at com.jme3.system.lwjgl.LwjglDisplay.runLoop(LwjglDisplay.java:193)
at com.jme3.system.lwjgl.LwjglAbstractDisplay.run(LwjglAbstractDisplay.java:232)
at java.lang.Thread.run(Thread.java:745)
BUILD SUCCESSFUL (total time: 6 seconds)
I have tried using Cloner and just cloning the Node directly like so,
private void cloneCheck() {
Node newNode = charNode.clone(false);
for (int i = 0; i < newNode.getNumControls(); i++) {
System.out.println("Cloned Control" + newNode.getControl(i));
}
}
Am I doing something wrong here?