void Warp::mouseDown( cinder::app::MouseEvent &event ) { if( !sIsEditMode ) return; if( mSelected >= mPoints.size() ) return; // calculate offset by converting control point from normalized to standard screen space ivec2 p = ( getControlPoint( mSelected ) * mWindowSize ); mOffset = event.getPos() - p; event.setHandled( true ); }
void Warp::mouseDrag( cinder::app::MouseEvent &event ) { if( !sIsEditMode ) return; if( mSelected >= mPoints.size() ) return; vec2 m( event.getPos() ); vec2 p( m.x - mOffset.x, m.y - mOffset.y ); // set control point in normalized screen space setControlPoint( mSelected, p / mWindowSize ); mIsDirty = true; event.setHandled( true ); }