hi
I spend lots of time to solve this problem ,but I couldn’t make non of these works.
I just want to make my editorwindow zoom by where mouse is.
here the codes I have tried.
Vector2 curPos;
float zoomScale=1;
void zoom()
{
if (Event.current.type == EventType.ScrollWheel) {
if (zoomScale + Event.current.delta.y / 50 > 0) {
zoomScale += Event.current.delta.y / 50;
}
curPos = Event.current.mousePosition * zoomScale;
}
EditorGUIUtility.ScaleAroundPivot (Vector2.one * zoomScale, curPos);
Repaint ();
}
with this code it is almost works but it will translate my gui too.
so who know what to do !?
matrix_BeforeScaling = GUI.matrix;
pivotPoint = new Vector2( rect_ScrollView_Cont.x + scrollPos.x - offsetScaleArea_X, rect_ScrollView_Cont.y + scrollPos.y - offsetScaleArea_Y );
GUIUtility.ScaleAroundPivot( scalePanel, pivotPoint );
//GUIUtility.RotateAroundPivot( fRot, pivotPoint );
matrix_AfterScaling = GUI.matrix;
....
GUI.matrix = matrix_BeforeScaling;
I forgot allot of how to do it… since i added it to my extension (kissUI), 2 years or so ago…
Sadly enough, i never bothered with making sure it zoomed in using the mouse position yet.
no, not working, you didn’t even get mouseposition at all !
if i wrote it like this it would works but it always move gui by mouse moving in contex,
if (Event.current.type == EventType.ScrollWheel) {
if (zoomScale + Event.current.delta.y / 50 > 0) {
zoomScale += Event.current.delta.y / 50;
}
}
curPos = Event.current.mousePosition * zoomScale;
EditorGUIUtility.ScaleAroundPivot (Vector2.one * zoomScale, curPos);
Repaint ();