Jelajahi Sumber

Windows can now be properly docked as tabs

Marko Pintera 10 tahun lalu
induk
melakukan
49110d0834

+ 1 - 1
BansheeEditor/Source/BsDockManager.cpp

@@ -978,7 +978,7 @@ namespace BansheeEngine
 			else
 				mShowOverlay = false;
 
-			return true;
+			return false;
 		}
 		else if(event.getType() == GUIMouseEventType::MouseDragAndDropDropped)
 		{

+ 1 - 1
BansheeEditor/Source/BsGUITabbedTitleBar.cpp

@@ -294,7 +294,7 @@ namespace BansheeEngine
 			else if(mDragInProgress && mDraggedBtn == btn)
 			{
 				offset.x = mDragBtnOffset;
-				offset.y = btn->_getLayoutData().area.y;
+				offset.y = curY;
 			}
 
 			GUILayoutData childData = data;

+ 2 - 0
MBansheeEditor/ProjectWindow.cs

@@ -1375,6 +1375,8 @@ namespace BansheeEditor
 
                     int elemSize = tileSize + GRID_ENTRY_SPACING;
                     elementsPerRow = (availableWidth - GRID_ENTRY_SPACING * 2) / elemSize;
+                    elementsPerRow = Math.Max(elementsPerRow, 1);
+
                     int numRows = MathEx.CeilToInt(numEntries / (float)elementsPerRow);
                     int neededHeight = numRows * (elemSize);
 

+ 27 - 35
TODO.txt

@@ -27,22 +27,16 @@ return them in checkForModifications?
 ---------------------------------------------------------------------
 Prefab diff
 
-TODO - How do I mark the scene as modified? I need to know if user made any modifications to the scene to
-       ask him before loading another scene or exiting.
-	     - Just have a EditorUtility.SetDirty for the resource? This means I would need to use this general
-		   approach for all resources, but I probably need that since likely I want to save all modified resources
-		   before editor exits? Think about this.
-		 - Keep active scene Prefab loaded in Scene
-		 - Call SetDirty on it whenever I:
-		   - Reparent an object, create new SO, or delete an SO (from editor)
-		   - Add a new component, remove a component, or modify a component in inspector
-		   - Allow user to call SetDirty himself
-		 - What do I do when I try to unload a dirty object?
-		  - Nothing unless doing so from the editor
-		 - Should I store dirty state in Script* objects?
-		  - Probably the best
-
-TODO - Add Prefab buttons to Inspector (Apply, Break, Revert)
+Add "dirty object" system to C#. Each ScriptResource and ScriptGameObject should have a dirty flag.
+ - It should be toggle-able via EditorUtility.SetDirty or similar. (Possibly make this part of ProjectLibrary)
+ - There should also be a method to check if something is dirty via EditorUtility.IsDirty or similar. (Possibly make this part of ProjectLibrary)
+  - Hook this up to Scene.IsModified because it is currently not implemented (Might need to keep a link to active Prefab in scene to do this)
+ - Add a "Save Project" button that automatically saves all dirty assets. Do this automatically when user quits the editor.
+ - Call SetDirty manually whenever:
+  - A new object or component is added to the scene
+  - An object or component is removed from the scene
+  - An object is reparented
+  - When component or resource is modified from inspector
 
 TODO - Later - When building level for release make sure to clear all prefab diffs (possibly store them elsewhere in the first place)
        - And all prefab instances should have updateFromPrefab called on them.
@@ -62,15 +56,25 @@ Code quality improvements:
 ----------------------------------------------------------------------
 Polish stage 1
 
-Hovering over a menu item doesn't open its sub-menu
 Docking a window to another windows title bar doesn't seem to work
-Decent looking default layout
+ - Seems to only happen when windows are docked
 Fix DX11 (and possibly DX9) rendering
-Missing Inspector values (name + transform fields)
+After undocking ProjectWindow the auto-scroll seems to be stuck in up position
+Decent looking default layout
+When selecting an gizmo icon the selection seems delayed and its gizmos flash for a frame before hiding
+Make sure that scene camera controls only work when scene view is in focus
+
 Fix handles
  - Some handle functionality is unfinished
  - Handles look too large when scene view is enlarged
-After undocking ProjectWindow the auto-scroll seems to be stuck in up position
+
+Add ping to SceneTreeView
+ - Hook up ping effect so it triggers when I select a resource or sceneobject
+
+Finish up inspector
+ - Missing name + transform fields (+ possible local/global toggle)
+ - Add Prefab buttons (Apply, Break, Revert)
+ - Hook it up to Selection changes so it shows inspector for current component/resource
 
 Need a way to add scene objects and components (and remove them)
  - Components adding should be only done by drag and dropping scripts to inspector (undoable)
@@ -86,8 +90,6 @@ Remember: Record all portions where objects & components get modified so I can m
 Project window
 
 Later:
- - Hook up ping effect so it triggers when I select a resource or sceneobject
-  - Add ping to SceneTreeView
  - Consider delaying search until user stops pressing keys (so not to have thousands of search results in the initial stages)
  - Save & restore scroll position when Refresh happens
 
@@ -149,11 +151,9 @@ Test:
 ----------------------------------------------------------------------
 Scene View
 
-AFTER I have scene widget in C#:
- - Test custom handles from C#
- - Test handle snapping
-
-Make sure that camera controls only work when scene view is in focus
+Test:
+ - Custom handles from C#
+ - Handle snapping
 
 ----------------------------------------------------------------------
 Other
@@ -171,14 +171,6 @@ Create a stack allocatable custom vector implementation and make getResourceDepe
 
 I shouldn't crash the app when a managed exception happens
 
-----------------------------------------------------------------------
-Multi-resource saving
- - Modify Font so it doesn't contain a texture, but instead keeps a handle to it
- - Register it in its meta file
- - When saving such a resource with dependencies save the contained files to a sub-directory with the same name as top level resource
-   - If it already exists in the manifest at a different location do it anyway, keep the other copy as-is in case user wanted it that way
-   - I'm not sure whether to do this for all Resource::save calls or only ones originating from ProjectLIbrary?
-
 /*********************************************************************/
 /************************ LESS IMPORTANT *****************************/
 /*********************************************************************/