public void OnGUI(){ if (Event.current.type == EventType.MouseUp || (isDragging && stopDragging)){ textureState=UFTTextureState.passive; if (isDragging){ isDragging = false; if (UFTAtlasEditorEventManager.onStopDragging!=null) UFTAtlasEditorEventManager.onStopDragging(this); if (UFTAtlasEditorEventManager.onAtlasChange!=null) UFTAtlasEditorEventManager.onAtlasChange(); } } else if (Event.current.type == EventType.MouseDown && canvasRect.Contains (Event.current.mousePosition)){ textureState=UFTTextureState.onDrag; isDragging = true; textureState=UFTTextureState.onDrag; mouseStartPosition=Event.current.mousePosition; if (UFTAtlasEditorEventManager.onStartDragging!=null) UFTAtlasEditorEventManager.onStartDragging(this); Event.current.Use(); stopDragging=false; } Color color=GUI.color; if (isDragging){ Vector2 currentOffset=Event.current.mousePosition-mouseStartPosition; if (Event.current.type == EventType.Repaint){ canvasRect.x+=currentOffset.x; canvasRect.y+=currentOffset.y; if (canvasRect.x < 0){ canvasRect.x=0; } if (canvasRect.y <0){ canvasRect.y=0; } if (canvasRect.xMax > (int)uftAtlas.atlasWidth){ canvasRect.x= (int)uftAtlas.atlasWidth-texture.width; } if (canvasRect.yMax > (int)uftAtlas.atlasHeight){ canvasRect.y= (int)uftAtlas.atlasHeight-texture.height; } mouseStartPosition=Event.current.mousePosition; } if (UFTAtlasEditorEventManager.onDragInProgress!=null) UFTAtlasEditorEventManager.onDragInProgress(); //if dragging lets color it to drag color border GUI.color=UFTTextureUtil.borderColorDict[UFTTextureState.onDrag]; // check is mouse under texture, if not, initialize dropping if (Event.current.type==EventType.Repaint && !canvasRect.Contains (Event.current.mousePosition)) stopDragging=true; } if (isSizeInvalid){ long currentTime=System.DateTime.Now.Ticks; if (controlBlinkTime==null){ controlBlinkTime=currentTime+blinkTimeout; currentBlinkColor=blinkColor1; } if (controlBlinkTime <= currentTime){ controlBlinkTime=currentTime+blinkTimeout; currentBlinkColor=(currentBlinkColor==blinkColor1)?blinkColor2:blinkColor1; } GUI.color=currentBlinkColor; if (UFTAtlasEditorEventManager.onNeedToRepaint!=null) UFTAtlasEditorEventManager.onNeedToRepaint(); } GUI.DrawTexture(canvasRect,texture,ScaleMode.ScaleToFit,true); //EditorGUI.DrawPreviewTexture(canvasRect,texture); if (isDragging || isSizeInvalid) GUI.color=color; }