Browse Source

Select and drag just one joint if they are overlaping

master
Krisjanis Rijnieks 11 years ago
parent
commit
9c967f92aa
  1. 4
      src/ofxBaseJoint.cpp
  2. 24
      src/ofxSurfaceGui.cpp
  3. 5
      src/ofxSurfaceGui.h

4
src/ofxBaseJoint.cpp

@ -14,9 +14,9 @@ ofxBaseJoint::~ofxBaseJoint()
void ofxBaseJoint::mousePressed(int x, int y, int button) void ofxBaseJoint::mousePressed(int x, int y, int button)
{ {
if ( hitTest(ofVec2f(x, y)) ) { if ( hitTest(ofVec2f(x, y)) ) {
selected = true; //selected = true;
clickDistance = position - ofVec2f(x, y); clickDistance = position - ofVec2f(x, y);
startDrag(); //startDrag();
} }
} }

24
src/ofxSurfaceGui.cpp

@ -4,6 +4,8 @@ ofxSurfaceGui::ofxSurfaceGui()
{ {
surface = NULL; surface = NULL;
mode = NONE; mode = NONE;
bProjectionMappingJointSelected = false;
bTextureMappingJointSelected = false;
} }
ofxSurfaceGui::~ofxSurfaceGui() ofxSurfaceGui::~ofxSurfaceGui()
@ -56,14 +58,26 @@ void ofxSurfaceGui::mousePressed(int x, int y, int button)
if (mode == NONE) return; if (mode == NONE) return;
if (mode == PROJECTION_MAPPING) { if (mode == PROJECTION_MAPPING) {
bProjectionMappingJointSelected = false;
for ( int i=0; i<projectionMappingJoints.size(); i++ ) { for ( int i=0; i<projectionMappingJoints.size(); i++ ) {
projectionMappingJoints[i].selected = false; projectionMappingJoints[i].selected = false;
projectionMappingJoints[i].mousePressed(x, y, button); projectionMappingJoints[i].mousePressed(x, y, button);
if ( !isProjectionMappingJointSelected() && projectionMappingJoints[i].hitTest(ofVec2f(x, y)) ) {
projectionMappingJoints[i].selected = true;
projectionMappingJoints[i].startDrag();
bProjectionMappingJointSelected = true;
}
} }
} else if (mode == TEXTURE_MAPPING) { } else if (mode == TEXTURE_MAPPING) {
bTextureMappingJointSelected = false;
for ( int i=0; i<textureMappingJoints.size(); i++ ) { for ( int i=0; i<textureMappingJoints.size(); i++ ) {
textureMappingJoints[i].selected = false; textureMappingJoints[i].selected = false;
textureMappingJoints[i].mousePressed(x, y, button); textureMappingJoints[i].mousePressed(x, y, button);
if ( !isTextureMappingJointSelected() && textureMappingJoints[i].hitTest(ofVec2f(x, y)) ) {
textureMappingJoints[i].selected = true;
textureMappingJoints[i].startDrag();
bTextureMappingJointSelected = true;
}
} }
} }
} }
@ -149,3 +163,13 @@ void ofxSurfaceGui::addNumTextureMappingJoints(int num)
addTextureMappingJoint(); addTextureMappingJoint();
} }
} }
bool ofxSurfaceGui::isProjectionMappingJointSelected()
{
return bProjectionMappingJointSelected;
}
bool ofxSurfaceGui::isTextureMappingJointSelected()
{
return bTextureMappingJointSelected;
}

5
src/ofxSurfaceGui.h

@ -34,6 +34,11 @@ private:
vector<ofxCircleJoint> projectionMappingJoints; vector<ofxCircleJoint> projectionMappingJoints;
vector<ofxCircleJoint> textureMappingJoints; vector<ofxCircleJoint> textureMappingJoints;
bool bTextureMappingJointSelected;
bool bProjectionMappingJointSelected;
bool isProjectionMappingJointSelected();
bool isTextureMappingJointSelected();
void addProjectionMappingJoint(); void addProjectionMappingJoint();
void addNumProjectionMappingJoints(int num); void addNumProjectionMappingJoints(int num);
void addTextureMappingJoint(); void addTextureMappingJoint();

Loading…
Cancel
Save