예제 #1
0
	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;

	}