entity can be removed
This commit is contained in:
parent
dc97395b2c
commit
93fa2db9ed
3 changed files with 88 additions and 85 deletions
119
editor_ng/MainForm.Designer.cs
generated
119
editor_ng/MainForm.Designer.cs
generated
|
@ -28,21 +28,21 @@
|
|||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
WeifenLuo.WinFormsUI.Docking.DockPanelSkin dockPanelSkin1 = new WeifenLuo.WinFormsUI.Docking.DockPanelSkin();
|
||||
WeifenLuo.WinFormsUI.Docking.AutoHideStripSkin autoHideStripSkin1 = new WeifenLuo.WinFormsUI.Docking.AutoHideStripSkin();
|
||||
WeifenLuo.WinFormsUI.Docking.DockPanelGradient dockPanelGradient1 = new WeifenLuo.WinFormsUI.Docking.DockPanelGradient();
|
||||
WeifenLuo.WinFormsUI.Docking.TabGradient tabGradient1 = new WeifenLuo.WinFormsUI.Docking.TabGradient();
|
||||
WeifenLuo.WinFormsUI.Docking.DockPaneStripSkin dockPaneStripSkin1 = new WeifenLuo.WinFormsUI.Docking.DockPaneStripSkin();
|
||||
WeifenLuo.WinFormsUI.Docking.DockPaneStripGradient dockPaneStripGradient1 = new WeifenLuo.WinFormsUI.Docking.DockPaneStripGradient();
|
||||
WeifenLuo.WinFormsUI.Docking.TabGradient tabGradient2 = new WeifenLuo.WinFormsUI.Docking.TabGradient();
|
||||
WeifenLuo.WinFormsUI.Docking.DockPanelGradient dockPanelGradient2 = new WeifenLuo.WinFormsUI.Docking.DockPanelGradient();
|
||||
WeifenLuo.WinFormsUI.Docking.TabGradient tabGradient3 = new WeifenLuo.WinFormsUI.Docking.TabGradient();
|
||||
WeifenLuo.WinFormsUI.Docking.DockPaneStripToolWindowGradient dockPaneStripToolWindowGradient1 = new WeifenLuo.WinFormsUI.Docking.DockPaneStripToolWindowGradient();
|
||||
WeifenLuo.WinFormsUI.Docking.TabGradient tabGradient4 = new WeifenLuo.WinFormsUI.Docking.TabGradient();
|
||||
WeifenLuo.WinFormsUI.Docking.TabGradient tabGradient5 = new WeifenLuo.WinFormsUI.Docking.TabGradient();
|
||||
WeifenLuo.WinFormsUI.Docking.DockPanelGradient dockPanelGradient3 = new WeifenLuo.WinFormsUI.Docking.DockPanelGradient();
|
||||
WeifenLuo.WinFormsUI.Docking.TabGradient tabGradient6 = new WeifenLuo.WinFormsUI.Docking.TabGradient();
|
||||
WeifenLuo.WinFormsUI.Docking.TabGradient tabGradient7 = new WeifenLuo.WinFormsUI.Docking.TabGradient();
|
||||
WeifenLuo.WinFormsUI.Docking.DockPanelSkin dockPanelSkin2 = new WeifenLuo.WinFormsUI.Docking.DockPanelSkin();
|
||||
WeifenLuo.WinFormsUI.Docking.AutoHideStripSkin autoHideStripSkin2 = new WeifenLuo.WinFormsUI.Docking.AutoHideStripSkin();
|
||||
WeifenLuo.WinFormsUI.Docking.DockPanelGradient dockPanelGradient4 = new WeifenLuo.WinFormsUI.Docking.DockPanelGradient();
|
||||
WeifenLuo.WinFormsUI.Docking.TabGradient tabGradient8 = new WeifenLuo.WinFormsUI.Docking.TabGradient();
|
||||
WeifenLuo.WinFormsUI.Docking.DockPaneStripSkin dockPaneStripSkin2 = new WeifenLuo.WinFormsUI.Docking.DockPaneStripSkin();
|
||||
WeifenLuo.WinFormsUI.Docking.DockPaneStripGradient dockPaneStripGradient2 = new WeifenLuo.WinFormsUI.Docking.DockPaneStripGradient();
|
||||
WeifenLuo.WinFormsUI.Docking.TabGradient tabGradient9 = new WeifenLuo.WinFormsUI.Docking.TabGradient();
|
||||
WeifenLuo.WinFormsUI.Docking.DockPanelGradient dockPanelGradient5 = new WeifenLuo.WinFormsUI.Docking.DockPanelGradient();
|
||||
WeifenLuo.WinFormsUI.Docking.TabGradient tabGradient10 = new WeifenLuo.WinFormsUI.Docking.TabGradient();
|
||||
WeifenLuo.WinFormsUI.Docking.DockPaneStripToolWindowGradient dockPaneStripToolWindowGradient2 = new WeifenLuo.WinFormsUI.Docking.DockPaneStripToolWindowGradient();
|
||||
WeifenLuo.WinFormsUI.Docking.TabGradient tabGradient11 = new WeifenLuo.WinFormsUI.Docking.TabGradient();
|
||||
WeifenLuo.WinFormsUI.Docking.TabGradient tabGradient12 = new WeifenLuo.WinFormsUI.Docking.TabGradient();
|
||||
WeifenLuo.WinFormsUI.Docking.DockPanelGradient dockPanelGradient6 = new WeifenLuo.WinFormsUI.Docking.DockPanelGradient();
|
||||
WeifenLuo.WinFormsUI.Docking.TabGradient tabGradient13 = new WeifenLuo.WinFormsUI.Docking.TabGradient();
|
||||
WeifenLuo.WinFormsUI.Docking.TabGradient tabGradient14 = new WeifenLuo.WinFormsUI.Docking.TabGradient();
|
||||
this.menuStrip1 = new System.Windows.Forms.MenuStrip();
|
||||
this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.openToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
|
@ -185,7 +185,6 @@
|
|||
//
|
||||
// removeToolStripMenuItem
|
||||
//
|
||||
this.removeToolStripMenuItem.Enabled = false;
|
||||
this.removeToolStripMenuItem.Name = "removeToolStripMenuItem";
|
||||
this.removeToolStripMenuItem.ShortcutKeyDisplayString = "";
|
||||
this.removeToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Q)));
|
||||
|
@ -257,50 +256,50 @@
|
|||
this.dockPanel.Location = new System.Drawing.Point(0, 24);
|
||||
this.dockPanel.Name = "dockPanel";
|
||||
this.dockPanel.Size = new System.Drawing.Size(1143, 602);
|
||||
dockPanelGradient1.EndColor = System.Drawing.SystemColors.ControlLight;
|
||||
dockPanelGradient1.StartColor = System.Drawing.SystemColors.ControlLight;
|
||||
autoHideStripSkin1.DockStripGradient = dockPanelGradient1;
|
||||
tabGradient1.EndColor = System.Drawing.SystemColors.Control;
|
||||
tabGradient1.StartColor = System.Drawing.SystemColors.Control;
|
||||
tabGradient1.TextColor = System.Drawing.SystemColors.ControlDarkDark;
|
||||
autoHideStripSkin1.TabGradient = tabGradient1;
|
||||
dockPanelSkin1.AutoHideStripSkin = autoHideStripSkin1;
|
||||
tabGradient2.EndColor = System.Drawing.SystemColors.ControlLightLight;
|
||||
tabGradient2.StartColor = System.Drawing.SystemColors.ControlLightLight;
|
||||
tabGradient2.TextColor = System.Drawing.SystemColors.ControlText;
|
||||
dockPaneStripGradient1.ActiveTabGradient = tabGradient2;
|
||||
dockPanelGradient2.EndColor = System.Drawing.SystemColors.Control;
|
||||
dockPanelGradient2.StartColor = System.Drawing.SystemColors.Control;
|
||||
dockPaneStripGradient1.DockStripGradient = dockPanelGradient2;
|
||||
tabGradient3.EndColor = System.Drawing.SystemColors.ControlLight;
|
||||
tabGradient3.StartColor = System.Drawing.SystemColors.ControlLight;
|
||||
tabGradient3.TextColor = System.Drawing.SystemColors.ControlText;
|
||||
dockPaneStripGradient1.InactiveTabGradient = tabGradient3;
|
||||
dockPaneStripSkin1.DocumentGradient = dockPaneStripGradient1;
|
||||
tabGradient4.EndColor = System.Drawing.SystemColors.ActiveCaption;
|
||||
tabGradient4.LinearGradientMode = System.Drawing.Drawing2D.LinearGradientMode.Vertical;
|
||||
tabGradient4.StartColor = System.Drawing.SystemColors.GradientActiveCaption;
|
||||
tabGradient4.TextColor = System.Drawing.SystemColors.ActiveCaptionText;
|
||||
dockPaneStripToolWindowGradient1.ActiveCaptionGradient = tabGradient4;
|
||||
tabGradient5.EndColor = System.Drawing.SystemColors.Control;
|
||||
tabGradient5.StartColor = System.Drawing.SystemColors.Control;
|
||||
tabGradient5.TextColor = System.Drawing.SystemColors.ControlText;
|
||||
dockPaneStripToolWindowGradient1.ActiveTabGradient = tabGradient5;
|
||||
dockPanelGradient3.EndColor = System.Drawing.SystemColors.ControlLight;
|
||||
dockPanelGradient3.StartColor = System.Drawing.SystemColors.ControlLight;
|
||||
dockPaneStripToolWindowGradient1.DockStripGradient = dockPanelGradient3;
|
||||
tabGradient6.EndColor = System.Drawing.SystemColors.GradientInactiveCaption;
|
||||
tabGradient6.LinearGradientMode = System.Drawing.Drawing2D.LinearGradientMode.Vertical;
|
||||
tabGradient6.StartColor = System.Drawing.SystemColors.GradientInactiveCaption;
|
||||
tabGradient6.TextColor = System.Drawing.SystemColors.ControlText;
|
||||
dockPaneStripToolWindowGradient1.InactiveCaptionGradient = tabGradient6;
|
||||
tabGradient7.EndColor = System.Drawing.Color.Transparent;
|
||||
tabGradient7.StartColor = System.Drawing.Color.Transparent;
|
||||
tabGradient7.TextColor = System.Drawing.SystemColors.ControlDarkDark;
|
||||
dockPaneStripToolWindowGradient1.InactiveTabGradient = tabGradient7;
|
||||
dockPaneStripSkin1.ToolWindowGradient = dockPaneStripToolWindowGradient1;
|
||||
dockPanelSkin1.DockPaneStripSkin = dockPaneStripSkin1;
|
||||
this.dockPanel.Skin = dockPanelSkin1;
|
||||
dockPanelGradient4.EndColor = System.Drawing.SystemColors.ControlLight;
|
||||
dockPanelGradient4.StartColor = System.Drawing.SystemColors.ControlLight;
|
||||
autoHideStripSkin2.DockStripGradient = dockPanelGradient4;
|
||||
tabGradient8.EndColor = System.Drawing.SystemColors.Control;
|
||||
tabGradient8.StartColor = System.Drawing.SystemColors.Control;
|
||||
tabGradient8.TextColor = System.Drawing.SystemColors.ControlDarkDark;
|
||||
autoHideStripSkin2.TabGradient = tabGradient8;
|
||||
dockPanelSkin2.AutoHideStripSkin = autoHideStripSkin2;
|
||||
tabGradient9.EndColor = System.Drawing.SystemColors.ControlLightLight;
|
||||
tabGradient9.StartColor = System.Drawing.SystemColors.ControlLightLight;
|
||||
tabGradient9.TextColor = System.Drawing.SystemColors.ControlText;
|
||||
dockPaneStripGradient2.ActiveTabGradient = tabGradient9;
|
||||
dockPanelGradient5.EndColor = System.Drawing.SystemColors.Control;
|
||||
dockPanelGradient5.StartColor = System.Drawing.SystemColors.Control;
|
||||
dockPaneStripGradient2.DockStripGradient = dockPanelGradient5;
|
||||
tabGradient10.EndColor = System.Drawing.SystemColors.ControlLight;
|
||||
tabGradient10.StartColor = System.Drawing.SystemColors.ControlLight;
|
||||
tabGradient10.TextColor = System.Drawing.SystemColors.ControlText;
|
||||
dockPaneStripGradient2.InactiveTabGradient = tabGradient10;
|
||||
dockPaneStripSkin2.DocumentGradient = dockPaneStripGradient2;
|
||||
tabGradient11.EndColor = System.Drawing.SystemColors.ActiveCaption;
|
||||
tabGradient11.LinearGradientMode = System.Drawing.Drawing2D.LinearGradientMode.Vertical;
|
||||
tabGradient11.StartColor = System.Drawing.SystemColors.GradientActiveCaption;
|
||||
tabGradient11.TextColor = System.Drawing.SystemColors.ActiveCaptionText;
|
||||
dockPaneStripToolWindowGradient2.ActiveCaptionGradient = tabGradient11;
|
||||
tabGradient12.EndColor = System.Drawing.SystemColors.Control;
|
||||
tabGradient12.StartColor = System.Drawing.SystemColors.Control;
|
||||
tabGradient12.TextColor = System.Drawing.SystemColors.ControlText;
|
||||
dockPaneStripToolWindowGradient2.ActiveTabGradient = tabGradient12;
|
||||
dockPanelGradient6.EndColor = System.Drawing.SystemColors.ControlLight;
|
||||
dockPanelGradient6.StartColor = System.Drawing.SystemColors.ControlLight;
|
||||
dockPaneStripToolWindowGradient2.DockStripGradient = dockPanelGradient6;
|
||||
tabGradient13.EndColor = System.Drawing.SystemColors.GradientInactiveCaption;
|
||||
tabGradient13.LinearGradientMode = System.Drawing.Drawing2D.LinearGradientMode.Vertical;
|
||||
tabGradient13.StartColor = System.Drawing.SystemColors.GradientInactiveCaption;
|
||||
tabGradient13.TextColor = System.Drawing.SystemColors.ControlText;
|
||||
dockPaneStripToolWindowGradient2.InactiveCaptionGradient = tabGradient13;
|
||||
tabGradient14.EndColor = System.Drawing.Color.Transparent;
|
||||
tabGradient14.StartColor = System.Drawing.Color.Transparent;
|
||||
tabGradient14.TextColor = System.Drawing.SystemColors.ControlDarkDark;
|
||||
dockPaneStripToolWindowGradient2.InactiveTabGradient = tabGradient14;
|
||||
dockPaneStripSkin2.ToolWindowGradient = dockPaneStripToolWindowGradient2;
|
||||
dockPanelSkin2.DockPaneStripSkin = dockPaneStripSkin2;
|
||||
this.dockPanel.Skin = dockPanelSkin2;
|
||||
this.dockPanel.TabIndex = 0;
|
||||
//
|
||||
// MainForm
|
||||
|
|
|
@ -25,10 +25,10 @@ Universe::~Universe()
|
|||
|
||||
void Universe::destroy()
|
||||
{
|
||||
m_free_slots.clear();
|
||||
m_positions.clear();
|
||||
m_rotations.clear();
|
||||
m_component_list.clear();
|
||||
m_first_free_slot = -1;
|
||||
m_physics_scene->destroy();
|
||||
delete m_physics_scene;
|
||||
m_physics_scene = 0;
|
||||
|
@ -47,7 +47,6 @@ void Universe::create(PhysicsSystem& physics_system)
|
|||
|
||||
Universe::Universe()
|
||||
{
|
||||
m_first_free_slot = -1;
|
||||
m_event_manager = new EventManager;
|
||||
m_event_manager->registerListener(ComponentEvent::type, this, &Universe::onEvent);
|
||||
}
|
||||
|
@ -155,22 +154,23 @@ void Entity::setRotation(const Quat& rot)
|
|||
|
||||
Entity Universe::createEntity()
|
||||
{
|
||||
if(m_first_free_slot != -1)
|
||||
{
|
||||
Entity e(this, m_first_free_slot);
|
||||
m_first_free_slot = *(int*)(&m_positions[m_first_free_slot].x);
|
||||
m_positions[e.index].set(0, 0, 0);
|
||||
m_rotations[e.index].set(0, 0, 0, 1);
|
||||
m_component_list[e.index].clear();
|
||||
return e;
|
||||
}
|
||||
else
|
||||
|
||||
if(m_free_slots.empty())
|
||||
{
|
||||
m_positions.push_back(Vec3(0, 0, 0));
|
||||
m_rotations.push_back(Quat(0, 0, 0, 1));
|
||||
m_component_list.push_back_empty();
|
||||
return Entity(this, m_positions.size() - 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
Entity e(this, m_free_slots.back());
|
||||
m_free_slots.pop_back();
|
||||
m_positions[e.index].set(0, 0, 0);
|
||||
m_rotations[e.index].set(0, 0, 0, 1);
|
||||
m_component_list[e.index].clear();
|
||||
return e;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -180,16 +180,7 @@ void Universe::destroyEntity(Entity entity)
|
|||
{
|
||||
m_event_manager->emitEvent(EntityDestroyedEvent(entity));
|
||||
m_component_list[entity.index].clear();
|
||||
if(m_first_free_slot == -1)
|
||||
{
|
||||
m_first_free_slot = entity.index;
|
||||
*(int*)(&m_positions[entity.index].x) = -1;
|
||||
}
|
||||
else
|
||||
{
|
||||
*(int*)(&m_positions[entity.index].x) = m_first_free_slot;
|
||||
m_first_free_slot = entity.index;
|
||||
}
|
||||
m_free_slots.push_back(entity.index);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -227,7 +218,6 @@ void Universe::onEvent(Event& evt)
|
|||
|
||||
void Universe::serialize(ISerializer& serializer)
|
||||
{
|
||||
serializer.serialize("first_free_slot", m_first_free_slot);
|
||||
serializer.serialize("count", m_positions.size());
|
||||
serializer.beginArray("positions");
|
||||
for(int i = 0; i < m_positions.size(); ++i)
|
||||
|
@ -246,12 +236,18 @@ void Universe::serialize(ISerializer& serializer)
|
|||
serializer.serializeArrayItem(m_rotations[i].w);
|
||||
}
|
||||
serializer.endArray();
|
||||
serializer.serialize("free_slot_count", m_free_slots.size());
|
||||
serializer.beginArray("free_slots");
|
||||
for(int i = 0; i < m_free_slots.size(); ++i)
|
||||
{
|
||||
serializer.serializeArrayItem(m_free_slots[i]);
|
||||
}
|
||||
serializer.endArray();
|
||||
}
|
||||
|
||||
|
||||
void Universe::deserialize(ISerializer& serializer)
|
||||
{
|
||||
serializer.deserialize("first_free_slot", m_first_free_slot);
|
||||
int count;
|
||||
serializer.deserialize("count", count);
|
||||
m_component_list.resize(count);
|
||||
|
@ -274,6 +270,14 @@ void Universe::deserialize(ISerializer& serializer)
|
|||
serializer.deserializeArrayItem(m_rotations[i].w);
|
||||
}
|
||||
serializer.deserializeArrayEnd();
|
||||
serializer.deserialize("free_slot_count", count);
|
||||
m_free_slots.resize(count);
|
||||
serializer.deserializeArrayBegin("free_slots");
|
||||
for(int i = 0; i < count; ++i)
|
||||
{
|
||||
serializer.deserializeArrayItem(m_free_slots[i]);
|
||||
}
|
||||
serializer.deserializeArrayEnd();
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -111,8 +111,8 @@ class LUX_ENGINE_API Universe
|
|||
private:
|
||||
vector<Vec3> m_positions; //< entity positions
|
||||
vector<Quat> m_rotations; //< entity rotations
|
||||
vector<int> m_free_slots;
|
||||
ComponentList m_component_list;
|
||||
int m_first_free_slot;
|
||||
EventManager* m_event_manager;
|
||||
PhysicsScene* m_physics_scene;
|
||||
};
|
||||
|
|
Loading…
Reference in a new issue