| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- Classes that need C# wrappers:
- Resources:
- - Mesh
- - Texture
- - Font
- - Material
- - GpuProgram
- - Technique
- - Shader
- - DepthStencil/Blend/Rasterizer/Sampler state
- Core objects:
- - SceneObject
- - Component
- - plus specific components Camera, Renderable, maybe others
- - (later ofc ability to derive custom C# components)
- GUI:
- - EditorWindow
- - GUIWidget
- - GUILabel/GUIButton/GUIToggle/GUIInputBox/GUITexture...
- - GUILayoutX/GUILayoutY/GUILayoutOptions
- - GUISkin/GUIElementStyle
- Systems:
- - Resources
- - Importer
- - Application (startUp/shutDown)
- - Cursor
- - Debug
- - Input
- - Time
- -----------------
- Implementation steps:
- - Implement flexible TreeView GUI component
- - Finish up Window Docking
- - EditorApplication
- - a way to return currently open project
- - Rethink how Resource .metas are handled
- - Implement Resource window
- - C# Importer (Internal class)
- - Imports resources and stores it within Library of the current Project folder
- - C# Resources, Save, Create
- - (Drag and drop import)
- - (File edit tracking)
- ----------------------------
- - GUISkin
- - List of properties with all common styles, like .button, .label
- - Get/SetStyle methods for custom styles
- - GUISkin.main <- default skin
- - GUI (Non EditorGUI version)
- - Implement C# Font
- - Implement C# SpriteTexture
- When loading resources I need to be able to load both project resources and engine ones.
- - BuiltinResources can be used for accessing default resources like GUI skin textures and similar
- - They're all loaded from a special folder that is set in EditorApplication
- BsApplication::getPrimaryViewport is not implemented
- Ensure I can easily ensure that engine and run separate from editor for when game publishing will be implemented.
- -----------------
- Notes:
- - I will need RequireComponent[] attribute. This attribute should automatically add the specified class to the wanted
- GameObject. This is useful if you suddenly decide your class is now dependant on another, but you would otherwise have to manually
- go through all instances of that GameObject in scene and add the required component.
- - HOWEVER, a more generic way of doing this (maybe using prefabs) would be useful. Because what happens when a class suddenly becomes
- dependant on a resource, or a specific instance of a class? In that case we cannot use RequireComponent.
- - Use FrameUpdate[QueueIdx], OnCreate[QueueIdx], OnDestroy[QueueIdx] attributes to signify to the scripting system when to execute
- certain methods. QueueIdx allows you to specify the order in which these methods will be called. In Unity you have Awake and Start methods
- for initialization, but here you may just specify OnCreate[0] and OnCreate[1].
- - I will likely need C++ equivalents of these queues because C++ components will also require such ordering.
|