Forráskód Böngészése

Fixed XY scaling in the 2d editor transform gizmo

Ivan Safrin 12 éve
szülő
commit
92a611ebb3
1 módosított fájl, 9 hozzáadás és 13 törlés
  1. 9 13
      IDE/Contents/Source/PolycodeScreenEditor.cpp

+ 9 - 13
IDE/Contents/Source/PolycodeScreenEditor.cpp

@@ -1103,24 +1103,20 @@ void PolycodeScreenEditorMain::handleMouseMove(Vector2 position) {
 				syncTransformToSelected();			
 			} 
 			else if(scalingY && scalingX) {
-				Vector2 trans = CoreServices::getInstance()->getCore()->getInput()->getMousePosition() - mouseBase;
+				Vector2 newMousePosition = CoreServices::getInstance()->getCore()->getInput()->getMousePosition();
+				Vector2 trans = newMousePosition - mouseBase;
+								
 				for(int i=0; i < selectedEntities.size(); i++) {			
-							
-					Vector3 trans3 = Vector3(trans.x, trans.y, 0.0);
 				
-					Quaternion q;								
-					q.fromAxes(0.0, 0.0, -selectedEntities[i]->getCombinedRoll());
-					trans3 = q.applyTo(trans3);
-								
+					Number baseDist = mouseBase.distance(selectedEntities[i]->getScreenPosition());
+					Number newDist = newMousePosition.distance(selectedEntities[i]->getScreenPosition());
+																					
 					Number scaleMod = 0.04;
 					
-					Number newScale = trans3.length() ;
-					if(trans3.x < 0 && trans.y > 0) {
-						newScale = newScale * -1;
-					}
+					Number newScale = newDist - baseDist;
 					
-					Number newScaleX = (baseEntityScales[i].y + (newScale * scaleMod));
-					Number newScaleY = (baseEntityScales[i].x + (newScale * scaleMod));
+					Number newScaleX = (baseEntityScales[i].x + (newScale * scaleMod));
+					Number newScaleY = (baseEntityScales[i].y + (newScale * scaleMod));
 					
 					selectedEntities[i]->setScale(newScaleX, newScaleY);
 				}