* 扩展的类型

split engine-core to scene, job-pipeline
so engine is split to these abstract extensions(with contribute):
scene
job-pipeline
scene-graph(for gltf parse, generate, load, ...)
...



so engine is split to these specific extensions(without contribute):
webgl
webgpu
...






so 3rd-library is split to these specific extensions(without contribute):
most
immutable
...






editor is split to these abstract extensions(change to specific extensions?):
ui
event
...





editor is split to these ui extensions(may with contribute?):
button
menu
scene view
<!-- inspector -->
布局 or container?
modal
...


* TODO add editor' extensions,contributes 

# ** TODO finish current editor demo(register custom ui)


** DONE add a button, click can log

*** DONE add meta3d-ui, ...

*** DONE pass run test

*** DONE implement reducer

dispatch action

# ** TODO update ui

# *** TODO update meta3d-ui

# use json for imgui ui?
# relearn unity->ui element!

# *** TODO use imgui for ui instead of dom

# use webgl
# (should be convenient to replace webgl to webgpu in the future!)

** TODO UI use webgl render imgui to implement

*** TODO move Wonder-IMGUI to be a extension!

only remain drawButton

how to not edit its code except extract backendRenderer(webgl/webgpu)(a contribute?) and API?


ui->imgui->imguiWebGLRenderer(share the same protocol with webgpu renderer)


*** TODO use UI-Render-WebGL extension for UI extension!  so can use UI-Render-WebGPU extension for UI to use webgpu and not edit UI code!!!

UI dependent on UI-Render-Type;
UI-Render-WebGL, UI-Render-WebGPU implement UI-Render-Type.






*** TODO use skin


*** TODO support whole skin(e.g. can set background by set whole canvas->clearColor)


*** TODO feat: merge imgui to ui!

# TODO render


*** DONE feat: element: elementFunc: get elementState instead of elementName

*** DONE feat: element: registerElement add execOrder

not add customData



*** DONE implement drawBox


*** DONE remove drawText

# *** TODO implement drawButton by custom control



# *** TODO feat: add register custom control

*** DONE feat: custom control ->func remove [api, uiExtensionName] 

dependentExtensionProtocolNameMap add meta3DUIExtensionName





*** DONE feat: add register skin


# *** TODO fix: fix skinName, component name and contribute name


*** DONE feat: custom control, element ->func change to uncurry









*** DONE add bdd test for imgui webgl1 renderer

init 

# render 

# drawBox

# extend:
# custom control
# skin

*** DONE add bdd test for ui extensions

# *** TODO add bdd test for custom control


drawBox

custom control

skin

dispatch
combineReducers


*** TODO refactor


*** DONE add dev, prodution meta3d:publish!

add scripts!


*** DONE pass run test




** TODO fix use-editor->ioData

*** DONE update event manager

# add order


# *** TODO pass current run test




*** DONE editor: add InitEventJob

*** DONE add bdd test


*** DONE fix use-editor->ioData


*** DONE pass run test


# ** TODO frontend: extension/contribute shop should sort by version


# * TODO improve

# ** TODO improve UI

# *** TODO support check state change for update geometry buffer

# use webgpu

# *** TODO support draw chinese text

# *** TODO support 3d ui


# *** TODO add bdd test





# *** TODO implement reducer

# dispatch action



** DONE finish TODOs


** DONE showPublishApp should refresh


# *** TODO add bdd test






# ** TODO add a button, click can log info and change its color





* TODO publish

