SceneView.txt 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. GIZMO TODO:
  2. - Make a C# wrapper for Camera and Renderable
  3. REFACTOR material getParams* and related classes. Those params should update all gpu program params that share that variable, not just the first found
  4. Clicking on empty space needs to deselect everything
  5. Dragging a slider doesn't move it properly (also need to fix colliders so not all handles overlap)
  6. Need a way to drag and drop items from Scene tree view to Scene view
  7. Handle normals seem to break as the camera moves at a certain angle
  8. Test handles
  9. - Test basic move handle
  10. - Test a custom handle from C#
  11. - FINISH HANDLE IMPLEMENTATION AND GLUE EVERYTHING TOGHETHER
  12. IMPLEMENT SELECTION RENDERING
  13. IMPROVE SceneGrid LOOK
  14. - LIKELY USE PIXEL SceneGrid WITH AA
  15. - OR (better) instead of drawing rows and columns of lines, just draw a plane with procedural texture
  16. LATER:
  17. - Need a way to render text for gizmos and handles, and in scene in general
  18. - Add drag to select
  19. - Need a better system to catch broken shaders. DX11 just draws nothing with depth, DX9 draws all white.
  20. ----------------------------------------------------------------------
  21. Handles
  22. SliderLine - position, direction, length
  23. - When initially activated it records position nearest so the line as the starting point
  24. - Further mouse dragging also finds nearest position to the line
  25. - Difference between those two results in a float value (how much to move along direction from position to reach new position)
  26. - Slider line has a capsule + sphere collider size of which can be set manually
  27. SliderPlane - position, normal, size
  28. - Similar to line slider only the direction is determined dynamically as well as distance
  29. - Outputs a Vector2 (direction * distance moved)
  30. - A OOB is used as a collider
  31. SliderDisc - position, normal, radius
  32. - When initially activated it records position nearest so the disc as the starting point
  33. - Further movement calculates the dynamic direction from the starting point to the current point on the plane the disc lies on
  34. - Distance along that direction is returned as amount of movement (similar to line slider)
  35. - Outputs a single float
  36. - A torus is used as a collider
  37. Free move/rotate/scale handles need to exist as well
  38. - Scale is easy, just perform uniform scale. Use SliderPlane oriented towards camera
  39. - Move also use SliderPlane oriented towards camera
  40. - Rotation use SliderDisc oriented towards camera
  41. ----------------------------------------------------
  42. STAGE 1
  43. CONCRETE TODO:
  44. HandleSliderPlane/HandleSliderDisc
  45. - update() implementation
  46. ----------------------------------------------------
  47. STAGE 2
  48. Implement RotateHandle & ScaleHandle in C#
  49. - Nearest point to disc/arc code
  50. Add free move, free rotate, free scale functionality
  51. Handles that remain the same size regardless of distance from camera
  52. - For both drawing and collision
  53. More complex types for drawing like DrawArrow in HandleDrawManager
  54. ----------------------------------------------------------------------
  55. SelectionRenderer
  56. Retrieve a list of selected objects from SelectionManager
  57. Find ones with Renderable components
  58. Retrieve Meshes, and world transforms from them
  59. Draw that same mesh with either a wireframe or a grayed out shader with a slight depth bias
  60. ---------------------------------------------------------------------
  61. Multi-resources
  62. Importer::import
  63. - Each SpecificImporter is responsible for importing all needed resources and registering them with Resources manager
  64. - However only the main resource is returned from that method
  65. - Rest of the resources are referenced by the UUID in ResourceMeta and can be retrieved there if needed
  66. Resources::save
  67. - Add to documentation that it will only save that exact resource and not any dependencies, you must call save() for them manually
  68. Resources::load
  69. - Will automatically load all dependencies, optionally add a boolean that allows you to load only the main asset
  70. ProjectLibrary
  71. - Needs to be extended so it shows sub-resources in tree view
  72. - Need to extend my mapping so one asset maps to multiple assets in library (need to remember how I do that currently, is it just by name or meta-file identifier?)
  73. ---------------------
  74. With this approach I can:
  75. - Reference and load the sub-resources directly
  76. - Technically I can also delete sub-resources