//import java.util.Vector; class FrameSelector extends Object3D implements java.io.Serializable { static final long serialVersionUID = -8438337215051725645L; Mocap mocap; FrameSelector(Mocap mocap) { this.mocap = mocap; name = "Frame:" + mocap.name; //CreateMaterial(); frame = 0; } void DrawNode(iCameraPane display, Object3D /*Composite*/ root, boolean selected) { while (realframe == 0) { realframe = (float)Math.random(); } // System.err.println("Select Frame # " + frame); // frame %= (getNumFrames() - mocap.offset); if (!link2master) // freeze current value frame = (int)((getNumFrames() - mocap.GetFirstFrame()) * realframe); // System.err.println("Select Frame modulo # " + frame); boolean waslive = mocap.live; mocap.live = true; mocap.setPose((mocap.baseframe - mocap.GetFirstFrame() + frame)%(getNumFrames() - mocap.GetFirstFrame()) + mocap.GetFirstFrame()); mocap.live = waslive; // inutile june 2014 super.DrawNode(display, root, selected); } int getNumFrames() { return mocap.bvh.animation.getNumFrames(); } Object3D deepCopy() { FrameSelector e = new FrameSelector(mocap); deepCopySelf(e); return e; } protected void deepCopyNode(Object3D other) { super.deepCopyNode(other); FrameSelector bp = (FrameSelector)other; // bp.frame = (int)(Math.random()*(getNumFrames() - mocap.offset)); } void createEditWindow(GroupEditor callee, boolean newWindow) { //editWindow = (new SphereEditor(this, deepCopy(), callee)).GetEditor(); if (newWindow) { objectUI = new FrameEditor(this, deepCopy(), callee); } else { objectUI = new FrameEditor(this, callee); } editWindow = objectUI.GetEditor(); } int frame; float realframe; }