tirbofish/dropbear · commit
f57db28bed5faab846765d141d4c86fb5f94f291
packing up for tomorrow, got an idea for UI (planning on using asm-like instruction sets. Unverified
@@ -38,6 +38,7 @@ use crate::physics::collider::ColliderGroup; use crate::physics::kcc::KCC; use crate::physics::rigidbody::RigidBody; use crate::states::{Camera3D, Light, Script, SerializedMeshRenderer}; +use crate::ui::UIComponent; /// The appdata directory for storing any information. /// @@ -67,6 +68,7 @@ pub fn register_components( component_registry.register_with_default::<RigidBody>(); component_registry.register_with_default::<ColliderGroup>(); component_registry.register_with_default::<KCC>(); + component_registry.register_with_default::<UIComponent>(); component_registry.register_converter::<MeshRenderer, SerializedMeshRenderer, _>( |_, _, renderer| { @@ -22,16 +22,46 @@ pub struct UIComponent { pub ui_file: ResourceReference, } +// note for tomorrow: use UIInstruction like that of asm + +#[derive(Default, Debug)] +pub enum UIInstruction { + #[default] + Nothing, + + StartColumn, + EndColumn, +} + pub struct UiContext { pub yakui_state: Mutex<Yakui>, - pub to_render: Mutex<Vec<Box<dyn FnOnce()>>>, + pub instruction_set: Mutex<Vec<UIInstruction>>, +} + +pub fn poll() { + UI_CONTEXT.with(|v| { + let ctx = v.borrow(); + let _yakui = ctx.yakui_state.lock(); + let instructions = ctx.instruction_set.lock().drain(..).collect::<Vec<UIInstruction>>();
Large diffs are not rendered by default. Showing the first 50 of 224 lines. Show full diff