Просмотр исходного кода

Fixed transforms in multiple selection

Ivan Safrin 13 лет назад
Родитель
Сommit
f976ee2bd1

+ 1 - 0
IDE/Contents/Include/PolycodeScreenEditor.h

@@ -103,6 +103,7 @@ class PolycodeScreenEditorMain : public UIElement {
 		ScreenEntity *addNewLayer(String layerName);	
 		void updateCursor();		
 		void selectEntity(ScreenEntity *entity);		
+		void resetSelectedEntityTransforms();
 		void setMode(int newMode);	
 		void handleEvent(Event *event);	
 		void resizePreviewScreen();		

+ 11 - 6
IDE/Contents/Source/PolycodeScreenEditor.cpp

@@ -1414,10 +1414,18 @@ bool PolycodeScreenEditorMain::hasSelected(ScreenEntity *entity) {
 	return false;
 }
 
+void PolycodeScreenEditorMain::resetSelectedEntityTransforms() {
+	baseEntityPositions.clear();
+	for(int i=0; i < selectedEntities.size(); i++) {
+		baseEntityPositions.push_back(selectedEntities[i]->getPosition2D());	
+	}
+}
+
 void PolycodeScreenEditorMain::selectEntity(ScreenEntity *entity) {
 
 	if(entity != NULL) {
 		if(hasSelected(entity)) {
+			resetSelectedEntityTransforms();
 			return;
 		}
 	}	
@@ -1449,13 +1457,10 @@ void PolycodeScreenEditorMain::selectEntity(ScreenEntity *entity) {
 	if(!multiSelect) {
 		selectedEntities.clear();
 	}
-	
-	if(selectedEntities.size() == 0) {
-		baseEntityPositions.clear();
-	}
-	
+		
 	selectedEntities.push_back(entity);
-	baseEntityPositions.push_back(entity->getPosition2D());	
+	
+	resetSelectedEntityTransforms();
 		
 	currentLayer->focusChild(entity);