TODO.txt 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. --------- ALL LONG TERM TASKS / FIXES BELONG TO GOOGLE DOCS: ImplementationTODO OR PossibleImprovements ----------
  2. See GDrive/Resources doc for resources refactor
  3. There seems to be some kind of memory corruption that happens when cloning game objects. During one clone the field entries provided to
  4. ManagedSerializeArray::deserializeManagedInstance were reported as ManagedSerializedArray instead of ManagerSerializedFieldData types.
  5. It's inconsistent to reproduce but started happening after I have modified managed object serialization to be on-demand. It's possibly
  6. related to lambdas not capturing types as I expect them to.
  7. TODO - Material waits to Shader to be loaded but doesn't wait for shader GpuPrograms.
  8. - What's the best way to ensure initialization is done when all these are loaded?
  9. When resource loading starts synchonously read all dependencies (and recurse over their dependencies too)
  10. - Create a ResourceLoadGroup that contains all the non-loaded resources
  11. - Cue async loads for all resources
  12. - Perform sync loads for resources that don't support async
  13. - return an unloaded handle
  14. Each time an async load completes check if the resource is part of a resource load group
  15. - If all resources in the load group are done (or there was just one resource), resolve all of their handles at once
  16. and trigger resource listener events.
  17. TODO
  18. - Pay special care in case a resource in resource load group gets unloaded. I should ignore it to avoid a deadlock that never finishes the resource load.
  19. - Allow for a situation if resource is part of multiple load groups.
  20. I can get mono errors by checking g_print calls in goutput.c
  21. - Calling thunks incorrectly can cause those weird errors with no real callstack
  22. Other:
  23. Window resize end callback
  24. Add cutoff plane when rendering discs for rotation handle.
  25. What happens when I close widgets from C++ code (e.g. due to layout reload or change)? Will C# still try to access them?
  26. C# SceneView:
  27. Test new Scene window and fix every issue
  28. Add ProjectWindow and HierarchyWindow to C#
  29. - Make TreeViews a C# element?
  30. Set up a default layout and save it
  31. -----------------
  32. Need a way to drag and drop items from Scene tree view to Scene view
  33. AFTER I have scene widget in C#:
  34. - Implement free move handle and remaining handles
  35. - Test custom handles from C#
  36. - Test handle snapping
  37. IMPLEMENT SELECTION RENDERING
  38. IMPROVE SceneGrid LOOK - Use the shader created in Unity
  39. ----------------------------------------------------------------------
  40. Handles
  41. SliderLine - position, direction, length
  42. - When initially activated it records position nearest so the line as the starting point
  43. - Further mouse dragging also finds nearest position to the line
  44. - Difference between those two results in a float value (how much to move along direction from position to reach new position)
  45. - Slider line has a capsule + sphere collider size of which can be set manually
  46. SliderPlane - position, normal, size
  47. - Similar to line slider only the direction is determined dynamically as well as distance
  48. - Outputs a Vector2 (direction * distance moved)
  49. - A OOB is used as a collider
  50. SliderDisc - position, normal, radius
  51. - When initially activated it records position nearest so the disc as the starting point
  52. - Further movement calculates the dynamic direction from the starting point to the current point on the plane the disc lies on
  53. - Distance along that direction is returned as amount of movement (similar to line slider)
  54. - Outputs a single float
  55. - A torus is used as a collider
  56. Free move/rotate/scale handles need to exist as well
  57. - Scale is easy, just perform uniform scale. Use SliderPlane oriented towards camera
  58. - Move also use SliderPlane oriented towards camera
  59. - Rotation use SliderDisc oriented towards camera
  60. ----------------------------------------------------
  61. STAGE 1
  62. CONCRETE TODO:
  63. HandleSliderPlane/HandleSliderDisc
  64. - update() implementation
  65. ----------------------------------------------------
  66. STAGE 2
  67. Implement RotateHandle & ScaleHandle in C#
  68. - Nearest point to disc/arc code
  69. Add 2D move and scale
  70. Add free move, free rotate, free scale functionality
  71. Handles that remain the same size regardless of distance from camera
  72. - For both drawing and collision
  73. More complex types for drawing like DrawArrow in HandleDrawManager
  74. ----------------------------------------------------------------------
  75. SelectionRenderer
  76. Retrieve a list of selected objects from SelectionManager
  77. Find ones with Renderable components
  78. Retrieve Meshes, and world transforms from them
  79. Draw that same mesh with either a wireframe or a grayed out shader with a slight depth bias
  80. ---------------------------------------------------------------------