package org.simantics.g3d.scenegraph.base;
import java.util.List;
public interface INode {
/**
*
* @return unique node identifier
*/
public Long getId();
/**
* @return root node of the scene graph or null
if this node is
* not part of a properly rooted scene graph hierarchy
*/
public ParentNode> getRootNode();
/**
* @return Parent node reference or null
if not set
*/
public ParentNode> getParent();
public String getParentRel();
/**
* Set parent node. This method is for scene graph internal use only and
* should not be called outside the scene graph structure. This method
* simply sets the parent node parent field, and does not affect on parent
* node (i.e., should be called only from parent node).
*/
public void setParent(ParentNode> parent, String name);
/**
* Perform cleanup for this node and for the child nodes. Any resources
* (including child nodes) related to this node are unusable after this
* operation. This method is for scene graph internal use only, thus should
* not be called outside the scene graph structure.
*/
public void cleanup();
/**
* Remove this node and its children from the scene graph.
*/
public void remove();
public void addListener(NodeListener listener);
public void removeListener(NodeListener listener);
public List getListeners();
}