public void writeObject(DataOutput out) throws IOException { super.writeObject(out); Texture attr = (Texture) node; Color4f clr = new Color4f(); attr.getBoundaryColor(clr); control.writeColor4f(out, clr); out.writeInt(attr.getBoundaryModeS()); out.writeInt(attr.getBoundaryModeT()); out.writeBoolean(attr.getEnable()); out.writeInt(imageComponents.length); for (int i = 0; i < imageComponents.length; i++) out.writeInt(imageComponents[i]); out.writeInt(attr.getMagFilter()); out.writeInt(attr.getMinFilter()); out.writeInt(attr.getBaseLevel()); out.writeInt(attr.getMaximumLevel()); out.writeFloat(attr.getMinimumLOD()); out.writeFloat(attr.getMaximumLOD()); Point3f lodOffset = new Point3f(); attr.getLodOffset(lodOffset); control.writePoint3f(out, lodOffset); out.writeInt(attr.getAnisotropicFilterMode()); out.writeFloat(attr.getAnisotropicFilterDegree()); int points = attr.getSharpenTextureFuncPointsCount(); out.writeInt(points); if (points > 0) { float[] lod = new float[points]; float[] pts = new float[points]; attr.getSharpenTextureFunc(lod, pts); for (int i = 0; i < points; i++) { out.writeFloat(lod[i]); out.writeFloat(pts[i]); } } points = attr.getFilter4FuncPointsCount(); out.writeInt(points); if (points >= 4) { float[] weights = new float[points]; attr.getFilter4Func(weights); for (int i = 0; i < points; i++) { out.writeFloat(weights[i]); } } }