CSharpWrap.txt 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. Classes that need C# wrappers:
  2. Math (Instead of a wrapper create actual C# classes, but which map 1-1 with C++ code so we can move them through C++/C# boundaries):
  3. -Vector2
  4. -Vector3
  5. -Vector4
  6. -Matrix3
  7. -Matrix4
  8. -Quaternion
  9. -Rect
  10. -Int2
  11. -Color
  12. Resources:
  13. - Mesh
  14. - Texture
  15. - Font
  16. - Material
  17. - GpuProgram
  18. - Technique
  19. - Shader
  20. - DepthStencil/Blend/Rasterizer/Sampler state
  21. Core objects:
  22. - RenderTarget
  23. - RenderWindow
  24. - RenderTexture
  25. - MultiRenderTexture
  26. - SceneObject
  27. - Component
  28. - plus specific components Camera, Renderable, maybe others
  29. - (later ofc ability to derive custom C# components)
  30. GUI:
  31. - EditorWindow
  32. - GUIWidget
  33. - GUILabel/GUIButton/GUIToggle/GUIInputBox/GUITexture...
  34. - GUILayoutX/GUILayoutY/GUILayoutOptions
  35. - GUISkin/GUIElementStyle
  36. Systems:
  37. - Resources
  38. - Importer
  39. - Application (startUp/shutDown)
  40. - Cursor
  41. - Debug
  42. - Input
  43. - Time
  44. -----------------
  45. Notes:
  46. - I will need RequireComponent[] attribute. This attribute should automatically add the specified class to the wanted
  47. GameObject. This is useful if you suddenly decide your class is now dependant on another, but you would otherwise have to manually
  48. go through all instances of that GameObject in scene and add the required component.
  49. - HOWEVER, a more generic way of doing this (maybe using prefabs) would be useful. Because what happens when a class suddenly becomes
  50. dependant on a resource, or a specific instance of a class? In that case we cannot use RequireComponent.
  51. - Use FrameUpdate[QueueIdx], OnCreate[QueueIdx], OnDestroy[QueueIdx] attributes to signify to the scripting system when to execute
  52. certain methods. QueueIdx allows you to specify the order in which these methods will be called. In Unity you have Awake and Start methods
  53. for initialization, but here you may just specify OnCreate[0] and OnCreate[1].
  54. - I will likely need C++ equivalents of these queues because C++ components will also require such ordering.