private Rect DrawPreview(Rect parent) { Vector2 offset = new Vector2(20, 20); // PREVIEW RECT Vector2 previewLocalPosition = new Vector2(offset.x, offset.y); Vector2 previewDimension = new Vector2(parent.width - offset.x * 2, parent.width - offset.x * 2); Rect previewRect = new Rect(previewLocalPosition, previewDimension); // FPS COUNTER RECT Vector2 fpsLocalPosition = new Vector2(previewRect.x, previewRect.yMax); Vector2 fpsDimension = new Vector2(40, 20); Rect fpsRect = new Rect(fpsLocalPosition, fpsDimension); // SLIDER RECT Vector2 speedSliderLocalPosition = new Vector2(fpsRect.xMax, previewRect.yMax); Vector2 speedSliderDimension = new Vector2(previewRect.width - fpsRect.width, 20); Rect speedSliderRect = new Rect(speedSliderLocalPosition, speedSliderDimension); // BG RECT Rect previewBGRect = new Rect(previewRect.x - offset.x / 2, previewRect.y - offset.y / 2, previewRect.width + offset.x, previewRect.height + speedSliderRect.height + offset.y / 2); // EXTEND WINDOW RECT Vector2 extendWindowRectOffset = new Vector2(5, 5); float extendWindowRectWidth = 24; float extendWindowRectHeight = 24; Rect extendWindowRect = new Rect(previewRect.xMax - extendWindowRectWidth - extendWindowRectOffset.x, previewRect.yMax - extendWindowRectHeight - extendWindowRectOffset.y, extendWindowRectWidth, extendWindowRectHeight); // DRAWING STUFF GUI.DrawTexture(previewBGRect, blackBarBG); EditorGUI.DrawTextureTransparent(previewRect, PIAAnimator.Instance.GetFrameOrFirst().GetFrameTexture()); GUI.Label(fpsRect, PIAAnimator.Instance.Speed + " FPS", skin.GetStyle("fpscounter")); PIAAnimator.Instance.Speed = (int)GUI.HorizontalSlider(speedSliderRect, PIAAnimator.Instance.Speed, 0, 24); if (PIAInputArea.IsMouseInsideRect(previewBGRect)) { if (GUI.Button(extendWindowRect, GUIContent.none, skin.GetStyle("extendpreview"))) { PIAExtendedPreviewWindow.ShowWindow(); } Rect extendWindowGlobalRect = PIATooltipUtility.ChildToGlobalRect(extendWindowRect, parent); Rect extendWindowTooltipRect = new Rect(0, 0, 105, 22.5f); PIATooltip extendWindowTooltip = new PIATooltip(extendWindowTooltipRect, "Extend preview"); PIATooltip.SetPositionPreset(ref extendWindowTooltip, extendWindowGlobalRect, PIATooltip.PIATooltipPreset.Down); PIATooltipUtility.AddTooltip(extendWindowGlobalRect, extendWindowTooltip); } return(previewBGRect); }
private void DrawFrames(Rect parent) { PIAImageData imageData = PIASession.Instance.ImageData; Vector2 offset = new Vector2(20, 20); Vector2 bgSize = new Vector2(15, 15); // FRAME RECT float frameRectPositionX = offset.x; float frameRectPositionY = offset.y; float frameRectWidth = 100; float frameRectHeight = frameRectWidth; float spaceBetweenFrames = 25; // FRAME INDEX RECT float frameNumberRectWidth = 22; float frameNumberRectHeight = 22; // DELETE RECT float deleteFrameRectWidth = 32; float deleteFrameRectHeight = 32; Vector2 deleteFrameRectOffset = new Vector2(2, 2); // DUPLICATE RECT float duplicateFrameRectWidth = 32; float duplicateFrameRectHeight = 32; Vector2 duplicateFrameRectOffset = new Vector2(2, 2); // MOVE UP RECT float moveFrameUpRectWidth = 32; float moveFrameUpRectHeight = 32; Vector2 moveFrameUpRectOffset = new Vector2(2, 2); // MOVE DOWN RECT float moveFrameDownRectWidth = 32; float moveFrameDownRectHeight = 32; Vector2 moveFrameDownRectOffset = new Vector2(2, 2); // ADD FRAME RECT float addFrameIconRectWidth = 40; float addFrameIconRectHeight = 40; // SCROLL VIEW RECT Rect viewRect = new Rect(0, 0, parent.width, (frameRectHeight + spaceBetweenFrames) * (imageData.Frames.Count + 1) + offset.y); Rect sliderRect = new Rect(0, 0, parent.width, parent.height - offset.y); // caching and changing default gui skins for scroll view GUIStyle nativeVerticalScrollbarThumb = GUI.skin.verticalScrollbarThumb; GUI.skin.verticalScrollbarThumb.normal.background = PIATextureDatabase.Instance.GetTexture("empty"); GUIStyle nativeVerticalScrollbarDownButton = GUI.skin.verticalScrollbarDownButton; GUI.skin.verticalScrollbarDownButton.normal.background = PIATextureDatabase.Instance.GetTexture("empty"); GUIStyle nativeVerticalScrollbarUpButton = GUI.skin.verticalScrollbarUpButton; GUI.skin.verticalScrollbarUpButton.normal.background = PIATextureDatabase.Instance.GetTexture("empty"); // DRAWING FRAMES framesSlider = GUI.BeginScrollView(sliderRect, framesSlider, viewRect, false, false, skin.GetStyle("horizontalscrollbar"), skin.GetStyle("verticalscrollbar")); { for (int i = 0; i < imageData.Frames.Count; i++) { var item = imageData.Frames[i]; // refreshing rects Rect frameRect = new Rect(frameRectPositionX, frameRectPositionY, frameRectWidth, frameRectHeight); Rect frameBGRect = new Rect(frameRect.x - bgSize.x / 2, frameRect.y - bgSize.y / 2, frameRect.width + bgSize.x, frameRect.height + bgSize.y); Rect frameNumberBGRect = new Rect(frameBGRect.xMax, frameBGRect.center.y - frameNumberRectHeight / 2, frameNumberRectWidth, frameNumberRectHeight); Rect deleteFrameRect = new Rect(frameRect.xMax - deleteFrameRectWidth - deleteFrameRectOffset.x, frameRect.y + deleteFrameRectOffset.y, deleteFrameRectWidth, deleteFrameRectHeight); Rect duplicateFrameRect = new Rect(frameRect.xMax - duplicateFrameRectWidth - duplicateFrameRectOffset.x, frameRect.yMax - duplicateFrameRectOffset.y - duplicateFrameRectHeight, duplicateFrameRectWidth, duplicateFrameRectHeight); Rect moveFrameUpFrameRect = new Rect(frameRect.x + moveFrameUpRectOffset.x, frameRect.y + moveFrameUpRectOffset.y, moveFrameUpRectWidth, moveFrameUpRectHeight); Rect moveFrameDownFrameRect = new Rect(frameRect.x + moveFrameDownRectOffset.x, frameRect.yMax - moveFrameDownRectOffset.y - moveFrameDownRectHeight, moveFrameDownRectWidth, moveFrameDownRectHeight); // INDEX NUMBER GUI.DrawTexture(frameNumberBGRect, blackBarBG); GUI.Label(frameNumberBGRect, i.ToString(), skin.GetStyle("editorbutton2")); // BG GUI.DrawTexture(frameBGRect, blackBarBG); // FRAME CONTENT EditorGUI.DrawTextureTransparent(frameRect, imageData.Frames[i].GetFrameTexture()); if (PIAInputArea.IsMouseInsideRect(frameBGRect)) { if (imageData.Frames.Count > 1) { // DELETE if (GUI.Button(deleteFrameRect, GUIContent.none, skin.GetStyle("deleteframe"))) { PIASession.Instance.ImageData.RemoveFrame(i); } Rect deleteFrameGlobalRect = PIATooltipUtility.ChildToGlobalRect(deleteFrameRect, parent); Rect deleteFrameTooltipRect = new Rect(0, 0, 50, 22.5f); PIATooltip deleteFrameTooltip = new PIATooltip(deleteFrameTooltipRect, "Delete"); PIATooltip.SetPositionPreset(ref deleteFrameTooltip, deleteFrameGlobalRect, PIATooltip.PIATooltipPreset.Right); PIATooltipUtility.AddTooltip(deleteFrameGlobalRect, deleteFrameTooltip); } // DUPLICATE if (GUI.Button(duplicateFrameRect, GUIContent.none, skin.GetStyle("copyframe"))) { PIAFrame newFrame = PIASession.Instance.ImageData.AddFrame(); newFrame.CopyFrom(item); } Rect duplicateFrameGlobalRect = PIATooltipUtility.ChildToGlobalRect(duplicateFrameRect, parent); Rect duplicateFrameTooltipRect = new Rect(0, 0, 75, 22.5f); PIATooltip duplicateFrameTooltip = new PIATooltip(duplicateFrameTooltipRect, "Duplicate"); PIATooltip.SetPositionPreset(ref duplicateFrameTooltip, duplicateFrameGlobalRect, PIATooltip.PIATooltipPreset.Up); PIATooltipUtility.AddTooltip(duplicateFrameGlobalRect, duplicateFrameTooltip); // MOVE UP if (i > 0) { if (GUI.Button(moveFrameUpFrameRect, GUIContent.none, skin.GetStyle("moveframup"))) { imageData.MoveFrameUp(i); } Rect moveFrameUpGlobalRect = PIATooltipUtility.ChildToGlobalRect(moveFrameUpFrameRect, parent); Rect moveFrameUpTooltipRect = new Rect(0, 0, 75, 22.5f); PIATooltip moveFrameUpTooltip = new PIATooltip(moveFrameUpTooltipRect, "Move up"); PIATooltip.SetPositionPreset(ref moveFrameUpTooltip, moveFrameUpGlobalRect, PIATooltip.PIATooltipPreset.Left); PIATooltipUtility.AddTooltip(moveFrameUpGlobalRect, moveFrameUpTooltip); } // MOVE DOWN if (i < imageData.Frames.Count - 1) { if (GUI.Button(moveFrameDownFrameRect, GUIContent.none, skin.GetStyle("moveframedown"))) { imageData.MoveFrameDown(i); } Rect moveFrameDownGlobalRect = PIATooltipUtility.ChildToGlobalRect(moveFrameDownFrameRect, parent); Rect moveFrameDownTooltipRect = new Rect(0, 0, 90, 22.5f); PIATooltip moveFrameDownTooltip = new PIATooltip(moveFrameDownTooltipRect, "Move down"); PIATooltip.SetPositionPreset(ref moveFrameDownTooltip, moveFrameDownGlobalRect, PIATooltip.PIATooltipPreset.Left); PIATooltipUtility.AddTooltip(moveFrameDownGlobalRect, moveFrameDownTooltip); } } // FRAME SELECTION BG if (GUI.Button(frameBGRect, GUIContent.none, skin.GetStyle("bglayerbutton"))) { PIASession.Instance.ImageData.CurrentFrameIndex = i; } frameRectPositionY += frameRectHeight + spaceBetweenFrames; // FRAME SELECTION OVERLAY if (i == PIASession.Instance.ImageData.CurrentFrameIndex) { GUI.Label(frameBGRect, GUIContent.none, skin.GetStyle("selectedframeoverlay")); } } // ADD NEW FRAME Rect addFrameRect = new Rect(frameRectPositionX, frameRectPositionY, frameRectWidth, frameRectHeight); Rect addFrameBGRect = new Rect(addFrameRect.x - bgSize.x / 2, addFrameRect.y - bgSize.y / 2, addFrameRect.width + bgSize.x, addFrameRect.height + bgSize.y); Rect addFrameBGLabelIcon = new Rect(addFrameRect.center.x - addFrameIconRectWidth / 2, addFrameRect.center.y - addFrameIconRectHeight / 2, addFrameIconRectWidth, addFrameIconRectHeight); GUI.DrawTexture(addFrameBGRect, blackBarBG); GUI.Label(addFrameBGLabelIcon, GUIContent.none, skin.GetStyle("addframe")); if (GUI.Button(addFrameRect, GUIContent.none, skin.GetStyle("bglayerbutton"))) { PIASession.Instance.ImageData.AddFrame(); } frameRectPositionY += frameRectHeight + spaceBetweenFrames; } GUI.EndScrollView(); // resetting scroll view gui skin GUI.skin.verticalScrollbarThumb = nativeVerticalScrollbarThumb; GUI.skin.verticalScrollbarDownButton = nativeVerticalScrollbarDownButton; GUI.skin.verticalScrollbarUpButton = nativeVerticalScrollbarUpButton; }