Package de.venjinx.jme3.scenegraph

Source Code of de.venjinx.jme3.scenegraph.Scenegraph

package de.venjinx.jme3.scenegraph;

import java.util.HashSet;

import de.venjinx.jme3.scenegraph.ScenegraphListener.GraphChangedEvent;

public class Scenegraph implements SceneNodeListener {

    private ScenegraphNode rootNode = new ScenegraphNode("Scene root node", this);
    private HashSet<ScenegraphListener> listeners = new HashSet<>();

    private boolean logChanges = false;

    @Override
    public void onNodeChanged(NodeChangedEvent e) {
        StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace();
        String trace = "(" + stackTrace[4].getFileName() + ":"
                + stackTrace[4].getLineNumber() + ")";

        switch (e.getType()) {
            case ATTACHED:
                if (logChanges)
                    System.out.println(e.getChild() + " attached to "
                            + e.getParent() + " - " + trace);
                break;
            case DETACHED:
                if (logChanges)
                    System.out.println(e.getChild() + " detached from "
                            + e.getParent() + " - " + trace);
                break;
        }

        for (ScenegraphListener sl : listeners)
            sl.onGraphChanged(new GraphChangedEvent(this, e));
    }

    public ScenegraphNode getRootNode() {
        return rootNode;
    }

    public void addScenegraphListener(ScenegraphListener listener) {
        listeners.add(listener);
    }

    public void removeListener(ScenegraphListener listener) {
        listeners.remove(listener);
    }

    public HashSet<ScenegraphListener> getListeners() {
        return listeners;
    }
}
TOP

Related Classes of de.venjinx.jme3.scenegraph.Scenegraph

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.