//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;
|
}
|