Search in sources :

Example 6 with Savable

use of com.jme3.export.Savable in project jmonkeyengine by jMonkeyEngine.

the class DOMOutputCapsule method writeStringSavableMap.

@Override
public void writeStringSavableMap(Map<String, ? extends Savable> map, String name, Map<String, ? extends Savable> defVal) throws IOException {
    if (map == null) {
        return;
    }
    if (map.equals(defVal)) {
        return;
    }
    Element stringMap = appendElement(name);
    Iterator<String> keyIterator = map.keySet().iterator();
    while (keyIterator.hasNext()) {
        String key = keyIterator.next();
        Element mapEntry = appendElement("MapEntry");
        mapEntry.setAttribute("key", key);
        Savable s = map.get(key);
        write(s, "Savable", null);
        currentElement = stringMap;
    }
    currentElement = (Element) stringMap.getParentNode();
}
Also used : Savable(com.jme3.export.Savable) Element(org.w3c.dom.Element)

Example 7 with Savable

use of com.jme3.export.Savable in project jmonkeyengine by jMonkeyEngine.

the class DOMOutputCapsule method write.

@Override
public void write(Savable[][] value, String name, Savable[][] defVal) throws IOException {
    if (value == null)
        return;
    if (Arrays.deepEquals(value, defVal))
        return;
    Element el = appendElement(name);
    el.setAttribute("size_outer", String.valueOf(value.length));
    el.setAttribute("size_inner", String.valueOf(value[0].length));
    for (Savable[] bs : value) {
        for (Savable b : bs) {
            write(b, b.getClass().getSimpleName(), null);
        }
    }
    currentElement = (Element) currentElement.getParentNode();
}
Also used : Savable(com.jme3.export.Savable) Element(org.w3c.dom.Element)

Example 8 with Savable

use of com.jme3.export.Savable in project jmonkeyengine by jMonkeyEngine.

the class DOMInputCapsule method readSavable.

public Savable readSavable(String name, Savable defVal) throws IOException {
    Savable ret = defVal;
    if (name != null && name.equals(""))
        logger.warning("Reading Savable String with name \"\"?");
    try {
        Element tmpEl = null;
        if (name != null) {
            tmpEl = findChildElement(currentElem, name);
            if (tmpEl == null) {
                return defVal;
            }
        } else if (isAtRoot) {
            tmpEl = doc.getDocumentElement();
            isAtRoot = false;
        } else {
            tmpEl = findFirstChildElement(currentElem);
        }
        currentElem = tmpEl;
        ret = readSavableFromCurrentElem(defVal);
        if (currentElem.getParentNode() instanceof Element) {
            currentElem = (Element) currentElem.getParentNode();
        } else {
            currentElem = null;
        }
    } catch (IOException ioe) {
        throw ioe;
    } catch (Exception e) {
        IOException io = new IOException(e.toString());
        io.initCause(e);
        throw io;
    }
    return ret;
}
Also used : Savable(com.jme3.export.Savable) IOException(java.io.IOException) IOException(java.io.IOException)

Example 9 with Savable

use of com.jme3.export.Savable in project jmonkeyengine by jMonkeyEngine.

the class DOMInputCapsule method readSavableArray2D.

public Savable[][] readSavableArray2D(String name, Savable[][] defVal) throws IOException {
    Savable[][] ret = defVal;
    try {
        Element tmpEl = findChildElement(currentElem, name);
        if (tmpEl == null) {
            return defVal;
        }
        int size_outer = Integer.parseInt(tmpEl.getAttribute("size_outer"));
        int size_inner = Integer.parseInt(tmpEl.getAttribute("size_outer"));
        Savable[][] tmp = new Savable[size_outer][size_inner];
        currentElem = findFirstChildElement(tmpEl);
        for (int i = 0; i < size_outer; i++) {
            for (int j = 0; j < size_inner; j++) {
                tmp[i][j] = (readSavableFromCurrentElem(null));
                if (i == size_outer - 1 && j == size_inner - 1) {
                    break;
                }
                currentElem = findNextSiblingElement(currentElem);
            }
        }
        ret = tmp;
        currentElem = (Element) tmpEl.getParentNode();
        return ret;
    } catch (IOException ioe) {
        throw ioe;
    } catch (Exception e) {
        IOException io = new IOException(e.toString());
        io.initCause(e);
        throw io;
    }
}
Also used : Savable(com.jme3.export.Savable) IOException(java.io.IOException) IOException(java.io.IOException)

Example 10 with Savable

use of com.jme3.export.Savable in project jmonkeyengine by jMonkeyEngine.

the class DOMInputCapsule method readSavableFromCurrentElem.

private Savable readSavableFromCurrentElem(Savable defVal) throws InstantiationException, ClassNotFoundException, IOException, IllegalAccessException {
    Savable ret = defVal;
    Savable tmp = null;
    if (currentElem == null || currentElem.getNodeName().equals("null")) {
        return null;
    }
    String reference = currentElem.getAttribute("ref");
    if (reference.length() > 0) {
        ret = referencedSavables.get(reference);
    } else {
        String className = currentElem.getNodeName();
        if (defVal != null) {
            className = defVal.getClass().getName();
        } else if (currentElem.hasAttribute("class")) {
            className = currentElem.getAttribute("class");
        }
        tmp = SavableClassUtil.fromName(className, null);
        String versionsStr = currentElem.getAttribute("savable_versions");
        if (versionsStr != null && !versionsStr.equals("")) {
            String[] versionStr = versionsStr.split(",");
            classHierarchyVersions = new int[versionStr.length];
            for (int i = 0; i < classHierarchyVersions.length; i++) {
                classHierarchyVersions[i] = Integer.parseInt(versionStr[i].trim());
            }
        } else {
            classHierarchyVersions = null;
        }
        String refID = currentElem.getAttribute("reference_ID");
        if (refID.length() < 1)
            refID = currentElem.getAttribute("id");
        if (refID.length() > 0)
            referencedSavables.put(refID, tmp);
        if (tmp != null) {
            // Allows reading versions from this savable
            savable = tmp;
            tmp.read(importer);
            ret = tmp;
        }
    }
    return ret;
}
Also used : Savable(com.jme3.export.Savable)

Aggregations

Savable (com.jme3.export.Savable)22 IOException (java.io.IOException)8 Element (org.w3c.dom.Element)6 MatParamOverride (com.jme3.material.MatParamOverride)2 File (java.io.File)2 FileInputStream (java.io.FileInputStream)2 InputCapsule (com.jme3.export.InputCapsule)1 BinaryExporter (com.jme3.export.binary.BinaryExporter)1 BinaryImporter (com.jme3.export.binary.BinaryImporter)1 AmbientLight (com.jme3.light.AmbientLight)1 Material (com.jme3.material.Material)1 Bucket (com.jme3.renderer.queue.RenderQueue.Bucket)1 ShadowMode (com.jme3.renderer.queue.RenderQueue.ShadowMode)1 Node (com.jme3.scene.Node)1 Spatial (com.jme3.scene.Spatial)1 Control (com.jme3.scene.control.Control)1 SafeArrayList (com.jme3.util.SafeArrayList)1 BufferedInputStream (java.io.BufferedInputStream)1 BufferedOutputStream (java.io.BufferedOutputStream)1 FileOutputStream (java.io.FileOutputStream)1