@rectalogic said:
I tried adding read/write to LightNode to load/save the LightControl, and also added read/write of the Light to LightControl, but am having problems getting it working.
OK, I got this working. I also did the same thing for CameraNode/CameraControl.
[patch]Index: src/core/com/jme3/scene/LightNode.java
===================================================================
--- src/core/com/jme3/scene/LightNode.java (revision 9716)
+++ src/core/com/jme3/scene/LightNode.java (working copy)
@@ -31,9 +31,12 @@
*/
package com.jme3.scene;
+import com.jme3.export.JmeExporter;
+import com.jme3.export.JmeImporter;
import com.jme3.light.Light;
import com.jme3.scene.control.LightControl;
import com.jme3.scene.control.LightControl.ControlDirection;
+import java.io.IOException;
/**
* <code>LightNode</code> is used to link together a {@link Light} object
@@ -90,4 +93,16 @@
public Light getLight() {
return lightControl.getLight();
}
+
+ @Override
+ public void read(JmeImporter im) throws IOException {
+ super.read(im);
+ lightControl = (LightControl)im.getCapsule(this).readSavable("lightControl", null);
+ }
+
+ @Override
+ public void write(JmeExporter ex) throws IOException {
+ super.write(ex);
+ ex.getCapsule(this).write(lightControl, "lightControl", null);
+ }
}
Index: src/core/com/jme3/scene/control/LightControl.java
===================================================================
--- src/core/com/jme3/scene/control/LightControl.java (revision 9716)
+++ src/core/com/jme3/scene/control/LightControl.java (working copy)
@@ -31,8 +31,10 @@
*/
package com.jme3.scene.control;
+import com.jme3.export.InputCapsule;
import com.jme3.export.JmeExporter;
import com.jme3.export.JmeImporter;
+import com.jme3.export.OutputCapsule;
import com.jme3.light.DirectionalLight;
import com.jme3.light.Light;
import com.jme3.light.PointLight;
@@ -173,18 +175,22 @@
return control;
}
private static final String CONTROL_DIR_NAME = "controlDir";
+ private static final String LIGHT_NAME = "light";
@Override
public void read(JmeImporter im) throws IOException {
super.read(im);
- im.getCapsule(this).readEnum(CONTROL_DIR_NAME,
- ControlDirection.class, ControlDirection.SpatialToLight);
+ InputCapsule ic = im.getCapsule(this);
+ controlDir = ic.readEnum(CONTROL_DIR_NAME,
+ ControlDirection.class, ControlDirection.SpatialToLight);
+ light = (Light)ic.readSavable(LIGHT_NAME, null);
}
@Override
public void write(JmeExporter ex) throws IOException {
super.write(ex);
- ex.getCapsule(this).write(controlDir, CONTROL_DIR_NAME,
- ControlDirection.SpatialToLight);
+ OutputCapsule oc = ex.getCapsule(this);
+ oc.write(controlDir, CONTROL_DIR_NAME, ControlDirection.SpatialToLight);
+ oc.write(light, LIGHT_NAME, null);
}
}
No newline at end of file
Index: src/core/com/jme3/scene/CameraNode.java
===================================================================
--- src/core/com/jme3/scene/CameraNode.java (revision 9716)
+++ src/core/com/jme3/scene/CameraNode.java (working copy)
@@ -31,9 +31,12 @@
*/
package com.jme3.scene;
+import com.jme3.export.JmeExporter;
+import com.jme3.export.JmeImporter;
import com.jme3.renderer.Camera;
import com.jme3.scene.control.CameraControl;
import com.jme3.scene.control.CameraControl.ControlDirection;
+import java.io.IOException;
/**
* <code>CameraNode</code> simply uses {@link CameraControl} to implement
@@ -85,6 +88,17 @@
return camControl.getCamera();
}
+ @Override
+ public void read(JmeImporter im) throws IOException {
+ super.read(im);
+ camControl = (CameraControl)im.getCapsule(this).readSavable("camControl", null);
+ }
+
+ @Override
+ public void write(JmeExporter ex) throws IOException {
+ super.write(ex);
+ ex.getCapsule(this).write(camControl, "camControl", null);
+ }
// @Override
// public void lookAt(Vector3f position, Vector3f upVector) {
// this.lookAt(position, upVector);
Index: src/core/com/jme3/scene/control/CameraControl.java
===================================================================
--- src/core/com/jme3/scene/control/CameraControl.java (revision 9716)
+++ src/core/com/jme3/scene/control/CameraControl.java (working copy)
@@ -31,8 +31,10 @@
*/
package com.jme3.scene.control;
+import com.jme3.export.InputCapsule;
import com.jme3.export.JmeExporter;
import com.jme3.export.JmeImporter;
+import com.jme3.export.OutputCapsule;
import com.jme3.math.Quaternion;
import com.jme3.math.Vector3f;
import com.jme3.renderer.Camera;
@@ -142,18 +144,22 @@
return control;
}
private static final String CONTROL_DIR_NAME = "controlDir";
+ private static final String CAMERA_NAME = "camera";
@Override
public void read(JmeImporter im) throws IOException {
super.read(im);
- im.getCapsule(this).readEnum(CONTROL_DIR_NAME,
- ControlDirection.class, ControlDirection.SpatialToCamera);
+ InputCapsule ic = im.getCapsule(this);
+ controlDir = ic.readEnum(CONTROL_DIR_NAME,
+ ControlDirection.class, ControlDirection.SpatialToCamera);
+ camera = (Camera)ic.readSavable(CAMERA_NAME, null);
}
@Override
public void write(JmeExporter ex) throws IOException {
super.write(ex);
- ex.getCapsule(this).write(controlDir, CONTROL_DIR_NAME,
- ControlDirection.SpatialToCamera);
+ OutputCapsule oc = ex.getCapsule(this);
+ oc.write(controlDir, CONTROL_DIR_NAME, ControlDirection.SpatialToCamera);
+ oc.write(camera, CAMERA_NAME, null);
}
}
No newline at end of file
[/patch]