Example #1
0
 protected Object getValue(edu.cmu.cs.stage3.alice.core.Transformable subjectValue) {
   Class[] classesToShare = {
     edu.cmu.cs.stage3.alice.core.TextureMap.class, edu.cmu.cs.stage3.alice.core.Geometry.class
   };
   edu.cmu.cs.stage3.alice.core.Model original =
       (edu.cmu.cs.stage3.alice.core.Model) subject.getTransformableValue();
   edu.cmu.cs.stage3.alice.core.Model copy =
       (edu.cmu.cs.stage3.alice.core.Model)
           original.HACK_createCopy(null, original.getParent(), -1, classesToShare, null);
   m_copies.addElement(copy);
   return copy;
 }
Example #2
0
 protected void stopped(edu.cmu.cs.stage3.alice.core.World world, double time) {
   super.stopped(world, time);
   for (int i = 0; i < m_copies.size(); i++) {
     edu.cmu.cs.stage3.alice.core.Model copy =
         (edu.cmu.cs.stage3.alice.core.Model) m_copies.elementAt(i);
     copy.vehicle.set(null);
     // copy.getSceneGraphTransformable().setParent( null );
     copy.removeFromParent();
     // todo
     // copy.release();
   }
   m_copies.clear();
 }
Example #3
0
 public void update(double t) {
   super.update(t);
   if (m_value != null) {
     double portion = getPortion(t);
     double x = m_xHermite.evaluate(portion);
     double y = m_yHermite.evaluate(portion);
     double z = m_zHermite.evaluate(portion);
     m_value.setPositionRightNow(x, y, z, m_subject);
     edu.cmu.cs.stage3.math.Quaternion q =
         edu.cmu.cs.stage3.math.Quaternion.interpolate(
             m_quaternion0, m_quaternion1, getPortion(t));
     m_value.setOrientationRightNow(q, m_subject);
   }
 }
Example #4
0
 public java.awt.Component getTreeCellRendererComponent(
     javax.swing.JTree tree,
     Object value,
     boolean selected,
     boolean expanded,
     boolean leaf,
     int row,
     boolean hasFocus) {
   openIcon = closedIcon = leafIcon = IconManager.lookupIcon(value);
   java.awt.Component component =
       super.getTreeCellRendererComponent(tree, value, selected, expanded, leaf, row, hasFocus);
   if (value instanceof edu.cmu.cs.stage3.alice.core.TextureMap) {
     edu.cmu.cs.stage3.alice.core.TextureMap tm = (edu.cmu.cs.stage3.alice.core.TextureMap) value;
     java.awt.image.BufferedImage image =
         (java.awt.image.BufferedImage) tm.getSceneGraphTextureMap().getImage();
     StringBuffer sb = new StringBuffer();
     sb.append(image.getWidth());
     sb.append('x');
     sb.append(image.getHeight());
     setToolTipText(sb.toString());
   } else if (value instanceof edu.cmu.cs.stage3.alice.core.Model) {
     edu.cmu.cs.stage3.alice.core.Model model = (edu.cmu.cs.stage3.alice.core.Model) value;
     edu.cmu.cs.stage3.alice.core.util.IndexedTriangleArrayCounter itaCounter =
         new edu.cmu.cs.stage3.alice.core.util.IndexedTriangleArrayCounter();
     model.visit(itaCounter, edu.cmu.cs.stage3.util.HowMuch.INSTANCE_AND_PARTS);
     StringBuffer sb = new StringBuffer();
     sb.append("vertices: ");
     sb.append(itaCounter.getVertexCount());
     sb.append("; triangles: ");
     sb.append(itaCounter.getIndexCount() / 3);
     setToolTipText(sb.toString());
   } else {
     setToolTipText(null);
   }
   return component;
 }
Example #5
0
    public void prologue(double t) {
      m_subject = subject.getModelVisualizationValue();
      m_value = item.getModelValue();
      Model prev = m_subject.getItem();
      if (prev != null && prev != m_value) {
        prev.visualization.set(null);
      }
      if (m_value != null) {

        // todo?
        m_value.visualization.set(null);

        Matrix44 transformation0 = m_value.getTransformation(m_subject);
        Matrix44 transformation1 = new Matrix44(m_subject.getTransformationFor(m_value));
        m_quaternion0 = transformation0.getAxes().getQuaternion();
        m_quaternion1 = transformation1.getAxes().getQuaternion();
        double dx = transformation0.m30 - transformation1.m30;
        double dy = transformation0.m31 - transformation1.m31;
        double dz = transformation0.m32 - transformation1.m32;
        double distance = Math.sqrt(dx * dx + dy * dy + dz * dz);
        double s = distance / 2;
        m_xHermite =
            new HermiteCubic(
                transformation0.m30,
                transformation1.m30,
                transformation0.m20 * s,
                transformation1.m20 * s);
        m_yHermite =
            new HermiteCubic(
                transformation0.m31,
                transformation1.m31,
                transformation0.m21 * s,
                transformation1.m21 * s);
        m_zHermite =
            new HermiteCubic(
                transformation0.m32,
                transformation1.m32,
                transformation0.m22 * s,
                transformation1.m22 * s);
      }
      super.prologue(t);
    }