예제 #1
0
  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]);
      }
    }
  }