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; }
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(); }
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); } }
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; }
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); }