CSharpWrap.txt 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. Classes that need C# wrappers:
  2. Resources:
  3. - Mesh
  4. - Texture
  5. - Font
  6. - Material
  7. - GpuProgram
  8. - Technique
  9. - Shader
  10. - DepthStencil/Blend/Rasterizer/Sampler state
  11. Core objects:
  12. - SceneObject
  13. - Component
  14. - plus specific components Camera, Renderable, maybe others
  15. - (later ofc ability to derive custom C# components)
  16. GUI:
  17. - EditorWindow
  18. - GUIWidget
  19. - GUILabel/GUIButton/GUIToggle/GUIInputBox/GUITexture...
  20. - GUILayoutX/GUILayoutY/GUILayoutOptions
  21. - GUISkin/GUIElementStyle
  22. Systems:
  23. - Resources
  24. - Importer
  25. - Application (startUp/shutDown)
  26. - Cursor
  27. - Debug
  28. - Input
  29. - Time
  30. -----------------
  31. Implementation steps:
  32. - Finish up minor scroll area issues
  33. - Implement flexible TreeView GUI component
  34. - Finish up Window Docking
  35. - EditorApplication
  36. - a way to return currently open project
  37. - Rethink how Resource .metas are handled
  38. - Implement Resource window
  39. - C# Importer (Internal class)
  40. - Imports resources and stores it within Library of the current Project folder
  41. - C# Resources, Save, Create
  42. - (Drag and drop import)
  43. - (File edit tracking)
  44. ----------------------------
  45. ScrollBar update:
  46. Ensure that scroll bar type is actually used somewhere in GUIScrollBar.cpp
  47. Test it properly
  48. - GUISkin
  49. - List of properties with all common styles, like .button, .label
  50. - Get/SetStyle methods for custom styles
  51. - GUISkin.main <- default skin
  52. - GUI (Non EditorGUI version)
  53. - Implement C# Font
  54. - Implement C# SpriteTexture
  55. When loading resources I need to be able to load both project resources and engine ones.
  56. - BuiltinResources can be used for accessing default resources like GUI skin textures and similar
  57. - They're all loaded from a special folder that is set in EditorApplication
  58. BsApplication::getPrimaryViewport is not implemented
  59. Ensure I can easily ensure that engine and run separate from editor for when game publishing will be implemented.
  60. -----------------
  61. Notes:
  62. - I will need RequireComponent[] attribute. This attribute should automatically add the specified class to the wanted
  63. GameObject. This is useful if you suddenly decide your class is now dependant on another, but you would otherwise have to manually
  64. go through all instances of that GameObject in scene and add the required component.
  65. - HOWEVER, a more generic way of doing this (maybe using prefabs) would be useful. Because what happens when a class suddenly becomes
  66. dependant on a resource, or a specific instance of a class? In that case we cannot use RequireComponent.
  67. - Use FrameUpdate[QueueIdx], OnCreate[QueueIdx], OnDestroy[QueueIdx] attributes to signify to the scripting system when to execute
  68. certain methods. QueueIdx allows you to specify the order in which these methods will be called. In Unity you have Awake and Start methods
  69. for initialization, but here you may just specify OnCreate[0] and OnCreate[1].
  70. - I will likely need C++ equivalents of these queues because C++ components will also require such ordering.