Module imp3d

Class Visitor3D

java.lang.Object
de.grogra.imp3d.Visitor3D
All Implemented Interfaces:
Visitor
Direct Known Subclasses:
DisplayVisitor, PhysicsVisitor, PickRayVisitor, PickRayVisitor, PickToolVisitor

public abstract class Visitor3D extends Object implements Visitor
This base implementation of the Visitor interface tracks information about the current coordinate transformation and layer of objects. Invocations of visit methods are forwarded to the abstract methods visitEnterImpl(Object, boolean, Path) and visitLeaveImpl(Object, boolean, Path).
Author:
Ole Kniemeyer
  • Field Details

    • state

      protected GraphState state
      The graph state in which this visitor runs.
    • transformation

      protected Matrix4d transformation
      The current transformation from local coordinates to global coordinates.
    • layer

      protected int layer
      The current layer.
    • resolution

      protected int resolution
      The level of resolution the visitor go through the graph. If a node has a higher resolution than the visitor, it stops.
  • Constructor Details

    • Visitor3D

      public Visitor3D()
  • Method Details

    • init

      protected void init(GraphState gs, EdgePattern pattern, Matrix4d t)
      Initializes this visitor.
      Parameters:
      gs - the graph state in which the visitor runs
      pattern - the pattern which is used to extract the scene tree to visit from the complete graph
      t - the initial transformation from local to global coordinates
    • getGraphState

      public GraphState getGraphState()
      Description copied from interface: Visitor
      Returns the graph state within which the visitor is operating.
      Specified by:
      getGraphState in interface Visitor
      Returns:
      graph state of visitor
    • getCurrentTransformation

      public Matrix4d getCurrentTransformation()
      Returns the current affine transformation from local coordinates to global coordinates.
      Returns:
      current coordinate transformation
    • visitEnter

      public Object visitEnter(Path path, boolean node)
      Description copied from interface: Visitor
      Informs this visitor about a node or edge in the graph. path contains the path from the root up to and including the node or, in case an edge is visited, the edge and its terminal node. Later on, Visitor.visitLeave(java.lang.Object, de.grogra.graph.Path, boolean) will be invoked with the returned value of this invocation, path and node as arguments. If this method returns Visitor.STOP, the corresponding visitLeave-method will be invoked immediately after this method, i.e., the visitor does not dive more deeply in the hierarchy. Otherwise, if a node is visited and there are instantiations associated with or edges connected with it (regardless of their direction), their corresponding visitor methods will be invoked inbetween. Likewise, if an edge is visited, its indicent terminal node will be visited next.
      Specified by:
      visitEnter in interface Visitor
      Parameters:
      path - current path
      node - do we enter a node or an edge?
      Returns:
      value to pass to visitLeave, may be Visitor.STOP
    • visitEnter

      protected Object visitEnter(Object object, boolean asNode, Path path)
    • visitEnterImpl

      protected abstract void visitEnterImpl(Object object, boolean asNode, Path path)
      This method has to be implemented by subclasses. It is invoked when object is entered.
      Parameters:
      object - the object being entered
      asNode - is object a node or an edge?
      path - the path to object if object is a node, the path to the node where object points to if object is an edge
    • visitLeaveImpl

      protected abstract void visitLeaveImpl(Object object, boolean asNode, Path path)
      This method has to be implemented by subclasses. It is invoked when object is left.
      Parameters:
      object - the object being left
      asNode - is object a node or an edge?
      path - the path to object if object is a node, the path to the node where object points to if object is an edge
    • visitLeave

      public boolean visitLeave(Object o, Path path, boolean node)
      Description copied from interface: Visitor
      Informs this visitor that a node or an edge has been processed completely. The value o is the return value of the corresponding invocation of Visitor.visitEnter(de.grogra.graph.Path, boolean). In case of a node and if this invocation returns false, no further edges of the current level of hierarchy will be passed to this visitor, i.e., the visitLeave methods for the enclosing edge and node will be invoked immediately. Likewise, in case of an edge and a return value false, no further instantiations or edges of the current level of hierarchy will be passed to this visitor, i.e., the visitLeave method for the enclosing node will be invoked immediately.
      Specified by:
      visitLeave in interface Visitor
      Parameters:
      o - returned value of visitEnter
      path - current path to node
      node - do we leave a node or an edge?
      Returns:
      true iff processing of current level shall be continued
    • visitInstanceEnter

      public Object visitInstanceEnter()
      Description copied from interface: Visitor
      Informs this visitor about the beginning of an instantiation. This method invokation is nested immediately within visitEnter/visitLeave of a node. Later on, Visitor.visitInstanceLeave(Object) will be invoked with the returned value of this invocation as argument. If this method returns Visitor.STOP, the visitInstanceLeave-method will be invoked immediately after this method, i.e., the visitor does not dive into the instantiation. Otherwise, the instantiation is performed, starting with an edge.
      Specified by:
      visitInstanceEnter in interface Visitor
      Returns:
      value to pass to visitInstanceLeave, may be Visitor.STOP
    • visitInstanceLeave

      public boolean visitInstanceLeave(Object o)
      Description copied from interface: Visitor
      Informs this visitor that an instantiation has been processed completely. The value o is the return value of the corresponding invocation of Visitor.visitInstanceEnter(). If this invocation returns false, no further instantiations or edges of the current level of hierarchy will be passed to this visitor, i.e., the visitLeave method for the enclosing node will be invoked immediately.
      Specified by:
      visitInstanceLeave in interface Visitor
      Parameters:
      o - returned value of visitInstanceEnter
      Returns:
      true iff processing of current level shall be continued
    • setResolution

      public Visitor3D setResolution(int r)