Browse Source

Add `selectNextSurface` and `selectPrevSurface` methods to `SurfaceManager`

master
Krisjanis Rijnieks 9 years ago
parent
commit
0f1ded7ba3
  1. 54
      src/Surfaces/SurfaceManager.cpp
  2. 4
      src/Surfaces/SurfaceManager.h

54
src/Surfaces/SurfaceManager.cpp

@ -93,6 +93,60 @@ BaseSurface * SurfaceManager::selectSurface(BaseSurface * surface){
return 0;
}
BaseSurface * SurfaceManager::selectNextSurface(){
int next;
if(selectedSurface == 0){
next = 0;
selectedSurface = selectSurface(next);
ofNotifyEvent(surfaceSelectedEvent, next, this);
return selectedSurface;
}
for(int i = 0; i < _surfaces.size(); ++i){
if(_surfaces[i] == selectedSurface){
if(i < _surfaces.size() - 1){
next = i + 1;
}else{
next = 0;
}
selectedSurface = _surfaces[next];
ofNotifyEvent(surfaceSelectedEvent, next, this);
return selectedSurface;
}
}
return 0;
}
BaseSurface * SurfaceManager::selectPrevSurface(){
int prev;
if(selectedSurface == 0){
prev = _surfaces.size() - 1;
selectedSurface = selectSurface(prev);
ofNotifyEvent(surfaceSelectedEvent, prev, this);
return selectedSurface;
}
for(int i = 0; i < _surfaces.size(); ++i){
if(_surfaces[i] == selectedSurface){
if(i > 0){
prev = i - 1;
}else{
prev = _surfaces.size() - 1;
}
selectedSurface = _surfaces[prev];
ofNotifyEvent(surfaceSelectedEvent, prev, this);
return selectedSurface;
}
}
return 0;
}
BaseSurface * SurfaceManager::getSelectedSurface(){
return selectedSurface;
}

4
src/Surfaces/SurfaceManager.h

@ -39,6 +39,8 @@ class SurfaceManager {
BaseSurface * getSurface(int index);
BaseSurface * selectSurface(int index);
BaseSurface * selectSurface(BaseSurface * surface);
BaseSurface * selectNextSurface();
BaseSurface * selectPrevSurface();
BaseSurface * getSelectedSurface();
int size();
@ -46,7 +48,7 @@ class SurfaceManager {
ofEvent <ofVec3f> vertexChangedEvent;
ofEvent <vector<ofVec3f>> verticesChangedEvent;
ofEvent <int> surfaceSelectedEvent;
void onVertexChanged(ofVec3f & vertex);
void onVerticesChanged(vector<ofVec3f> & vertices);

Loading…
Cancel
Save