Inspector.txt 4.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. Needed controls:
  2. Array field/List field/Dictionary field
  3. Matrix3 field
  4. Matrix4 field
  5. GameObject field
  6. Resource field
  7. -------------
  8. A way to close a window & destroy a GUI panel!
  9. - Will likely need to refactor ScriptEditorWindow as currently it performs initialization
  10. in constructor and destroy in destructor, but open/close will be called within its lifetime
  11. - Also a way to get notified if the window gets closed from C++
  12. - Once closed the referenced GUIPanels should no longer work (set "destroyed" flag?)
  13. - What about calling Destroy on a GUIPanel?
  14. - It should notify owning EditorWindow
  15. Ensure that setting depth for GUIArea works properly. It's not properly implemented yet.
  16. Test setting/getting field values using my SerializableObject/SerializableField interface
  17. - I'm guessing it won't work because of unboxing & value type issues. I might want to consider somehow
  18. refactoring managedSerializableField so that I can re-use it for setting/getting field values in general purpose case.
  19. UndoRedo should work on URI type basis where it remembers object ID, and path across its fields to the field that was modified
  20. - SerializableField should probably be the type responsible for handling the URI
  21. - Will I need two different URI types for resources and scene objects?
  22. - Probably, resources don't need hierarchies, but I think I should ignore resources for now as I'm not sure they will be using Inspectable system
  23. - When trying to undo/redo and object id cannot be found, it just skips it
  24. - When recompiling clear the undo/redo queue
  25. Things to think about/do:
  26. - Add EditorFields to C#
  27. - Inspectable fields need TAB support
  28. - Modify C++ GUIElement so I can do setNextTabElement(GUIElement*)
  29. - Inspectable fields need Undo/Redo support. Consider how to best implement it
  30. - C++ Undo/Redo system needs nested contexts
  31. - C++ Ensure that Undo/Redo works on per-field basis (undoing items within a field)
  32. - Add C# UndoRedo
  33. - Modify C++ Editor fields so that calling setValue doesn't update the visual value until focus is lost
  34. - When user is currently writing in an input box I don't want refresh to overwrite that value.
  35. - Expand/Collapse needs to work for both Components and their sub-objects (Structs, Arrays, etc.)
  36. - Support for initializing SerializableObject/SerializableArray (and their fields, together with getters/setters)
  37. - How do I refresh currently visible inspector fields.
  38. - Also how will this be done with custom inspectors, when I might not use InspectableObject
  39. - Currently I do not have a way to creating an Inspector field for just a single field, only for an entire object
  40. - Finally once all other things are done implement support for multi-rank arrays, lists and dictionaries
  41. How will UndoRedo keep a reference to the object?
  42. - What if the object gets destroyed?
  43. - Keeping a reference will prevent the object from being destroyed.
  44. - Although heavy stuff is destroyed manually via Destroy anyway
  45. STUBBED IN METHODS:
  46. SerializableObject
  47. SerializableArray
  48. SerializableField
  49. ----------------------
  50. Non-inspector:
  51. - Deleting first entry in input field moves the cursor incorrectly
  52. - Test if parsing int/float value from int/float field actually works
  53. - ProfilerOverlay elements are constantly dirty? even though I'm not calling update
  54. Refactor BuiltinMaterialFactory to BuiltinEngineResources
  55. Cursor
  56. - A way to save/load a set of cursors
  57. Get rid of the CamelotFramework namespace
  58. - I shouldn't need to prefix each variable with
  59. - Rename files/variables/macros starting with Cm
  60. - Rename projects starting with Camelot
  61. - Search for any remaining uses of "Camelot" and remove them
  62. Undocking a window wont remove the tabbed title bar
  63. While dragging an undocked window, dropping it over the main window (not over dock overlays) will not restore it
  64. - GameObjectField
  65. - When dragging over GameObjectField cursor needs to change depending whether drop will be accepted or not
  66. - How will I limit it to just certain component types?
  67. Make a common class for ScriptGUIElement as they all share:
  68. - Destroy(), DestroyInstance(), SetParent(), SetVisible() methods, and potentially others
  69. Add InsertElement to GUILayout
  70. Boost any replacement: http://www.codeproject.com/Articles/11250/High-Performance-Dynamic-Typing-in-C-using-a-Repla
  71. - Also POCO has any class