-Events system update order is now choosen according to system priority
-added mixin for adding exluded components using it's type -demos: *added GUI for selecting templates and choosing tools *change SpaceInvades SideMove system to not using events for better performance and multithreading *added Entites spawning support *fixed some Snake demo bugs *GUI work's better now
This commit is contained in:
parent
19fc440ed6
commit
1f78f2506c
9 changed files with 436 additions and 60 deletions
|
|
@ -7,18 +7,35 @@ import cimgui.cimgui;
|
|||
import ecs.std;
|
||||
import ecs.system;
|
||||
import ecs.vector;
|
||||
import ecs.entity;
|
||||
|
||||
import gui.system;
|
||||
import gui.template_;
|
||||
|
||||
extern(C):
|
||||
|
||||
struct GUIManager
|
||||
{
|
||||
Vector!SystemGUI systems;
|
||||
Vector!TemplateGUI templates;
|
||||
|
||||
uint selected_tempalte = 0;
|
||||
|
||||
void clear()
|
||||
{
|
||||
foreach(tmpl; templates)
|
||||
{
|
||||
launcher.manager.freeTemplate(tmpl.tmpl);
|
||||
}
|
||||
|
||||
systems.clear();
|
||||
templates.clear();
|
||||
}
|
||||
|
||||
EntityTemplate* getSelectedTemplate()
|
||||
{
|
||||
if(templates.length > selected_tempalte)return templates[selected_tempalte].tmpl;
|
||||
else return null;
|
||||
}
|
||||
|
||||
void addSystem(ushort id, const (char)* name, bool enabled = true)
|
||||
|
|
@ -28,9 +45,19 @@ struct GUIManager
|
|||
systems.add(SystemGUI(name,system,enabled));
|
||||
}
|
||||
|
||||
void addTemplate(ushort[] components, const (char)* name)
|
||||
{
|
||||
templates.add(TemplateGUI(name, launcher.manager.allocateTemplate(components)));
|
||||
}
|
||||
|
||||
void addTemplate(EntityTemplate* tmpl, const (char)* name)
|
||||
{
|
||||
templates.add(TemplateGUI(name, tmpl));
|
||||
}
|
||||
|
||||
void gui()
|
||||
{
|
||||
if(igCollapsingHeader("Systems", ImGuiTreeNodeFlags_Framed))
|
||||
if(igCollapsingHeader("Systems", ImGuiTreeNodeFlags_Framed | ImGuiTreeNodeFlags_SpanFullWidth | ImGuiTreeNodeFlags_FramePadding))
|
||||
{
|
||||
bool true_ = true;
|
||||
igIndent(8);
|
||||
|
|
@ -44,6 +71,27 @@ struct GUIManager
|
|||
}
|
||||
igUnindent(8);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void toolGui()
|
||||
{
|
||||
if(templates.length)
|
||||
{
|
||||
if(igBeginCombo("Template",templates[selected_tempalte].name,0))
|
||||
{
|
||||
foreach(i, tmpl; templates)
|
||||
{
|
||||
if(igSelectable(tmpl.name,false,0,ImVec2(0,0)))
|
||||
{
|
||||
selected_tempalte = cast(uint)i;
|
||||
}
|
||||
}
|
||||
igEndCombo();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if(igBeginCombo("Template",null,0))igEndCombo();
|
||||
}
|
||||
}
|
||||
}
|
||||
9
demos/source/gui/template_.d
Normal file
9
demos/source/gui/template_.d
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
module gui.template_;
|
||||
|
||||
import ecs.entity;
|
||||
|
||||
struct TemplateGUI
|
||||
{
|
||||
const (char)* name;
|
||||
EntityTemplate* tmpl;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue