Package ca.nengo.ui.lib.world.piccolo.primitives

Source Code of ca.nengo.ui.lib.world.piccolo.primitives.PXCamera

package ca.nengo.ui.lib.world.piccolo.primitives;

import java.awt.geom.AffineTransform;

import ca.nengo.ui.lib.world.WorldObject;
import edu.umd.cs.piccolo.PCamera;
import edu.umd.cs.piccolo.PNode;
import edu.umd.cs.piccolo.activities.PActivity;
import edu.umd.cs.piccolo.activities.PTransformActivity;
import edu.umd.cs.piccolo.util.PUtil;

public class PXCamera extends PCamera implements PiccoloNodeInWorld {

  private static final long serialVersionUID = 1L;

  private PTransformActivity currentActivity;

  private WorldObject wo;

  @Override
  public void addChild(int index, PNode child) {
    super.addChild(index, child);
    if (wo != null && child != null && child instanceof PiccoloNodeInWorld) {
      wo.childAdded(((PiccoloNodeInWorld) child).getWorldObject());
    }
  }

  public PNode removeChild(int arg0) {
    PNode node = super.removeChild(arg0);

    if (wo != null && node != null && node instanceof PiccoloNodeInWorld) {
      wo.childRemoved(((PiccoloNodeInWorld) node).getWorldObject());
    }

    return node;
  }

  /*
   * Modification to PNode's animateToTransform. This animation is sequenced
   * so that the previous transform animation finishes first (non-Javadoc)
   *
   * @see edu.umd.cs.piccolo.PNode#animateToTransform(java.awt.geom.AffineTransform,
   *      long)
   */
  @Override
  public PTransformActivity animateViewToTransform(AffineTransform destTransform, long duration) {
    if (duration == 0) {
      setViewTransform(destTransform);
      return null;
    } else {
      PTransformActivity.Target t = new PTransformActivity.Target() {
        public void getSourceMatrix(double[] aSource) {
          PXCamera.this.getViewTransform().getMatrix(aSource);
        }

        public void setTransform(AffineTransform aTransform) {
          PXCamera.this.setViewTransform(aTransform);
        }
      };

      if (currentActivity != null) {
        currentActivity.terminate(PActivity.TERMINATE_WITHOUT_FINISHING);
      }

      currentActivity = new PTransformActivity(duration, PUtil.DEFAULT_ACTIVITY_STEP_RATE, t,
          destTransform);

      addActivity(currentActivity);
      return currentActivity;
    }
  }

  public WorldObject getWorldObject() {
    return wo;
  }

  public boolean isAnimating() {
    return false;
  }

  public void setWorldObject(WorldObject worldObjectParent) {
    this.wo = worldObjectParent;
  }
}
TOP

Related Classes of ca.nengo.ui.lib.world.piccolo.primitives.PXCamera

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.