void assertHasNotComponentA(Entity e) { var components = e.GetComponents(); components.Length.should_be(0); var indices = e.GetComponentIndices(); indices.Length.should_be(0); e.HasComponentA().should_be_false(); e.HasComponents(_indicesA).should_be_false(); e.HasAnyComponent(_indicesA).should_be_false(); }
void assertHasComponentA(Entity e, IComponent component = null) { if (component == null) { component = Component.A; } e.GetComponentA().should_be_same(component); var components = e.GetComponents(); components.Length.should_be(1); components.should_contain(component); var indices = e.GetComponentIndices(); indices.Length.should_be(1); indices.should_contain(CID.ComponentA); e.HasComponentA().should_be_true(); e.HasComponents(_indicesA).should_be_true(); e.HasAnyComponent(_indicesA).should_be_true(); }
public static void DrawComponents(Pool pool, Entity entity) { bool[] unfoldedComponents; if (!_poolToUnfoldedComponents.TryGetValue(pool, out unfoldedComponents)) { unfoldedComponents = new bool[pool.totalComponents]; for (int i = 0; i < unfoldedComponents.Length; i++) { unfoldedComponents[i] = true; } _poolToUnfoldedComponents.Add(pool, unfoldedComponents); } EntitasEditorLayout.BeginVerticalBox(); { EntitasEditorLayout.BeginHorizontal(); { EditorGUILayout.LabelField("Components (" + entity.GetComponents().Length + ")", EditorStyles.boldLabel); if (GUILayout.Button("▸", GUILayout.Width(21), GUILayout.Height(14))) { for (int i = 0; i < unfoldedComponents.Length; i++) { unfoldedComponents[i] = false; } } if (GUILayout.Button("▾", GUILayout.Width(21), GUILayout.Height(14))) { for (int i = 0; i < unfoldedComponents.Length; i++) { unfoldedComponents[i] = true; } } } EntitasEditorLayout.EndHorizontal(); EditorGUILayout.Space(); var componentNames = entity.poolMetaData.componentNames; var index = EditorGUILayout.Popup("Add Component", -1, componentNames); if (index >= 0) { var componentType = entity.poolMetaData.componentTypes[index]; var component = (IComponent)Activator.CreateInstance(componentType); entity.AddComponent(index, component); } EditorGUILayout.Space(); EntitasEditorLayout.BeginHorizontal(); { _componentNameSearchTerm = EditorGUILayout.TextField("Search", _componentNameSearchTerm); const string clearButtonControlName = "Clear Button"; GUI.SetNextControlName(clearButtonControlName); if (GUILayout.Button("x", GUILayout.Width(19), GUILayout.Height(14))) { _componentNameSearchTerm = string.Empty; GUI.FocusControl(clearButtonControlName); } } EntitasEditorLayout.EndHorizontal(); EditorGUILayout.Space(); var indices = entity.GetComponentIndices(); var components = entity.GetComponents(); for (int i = 0; i < components.Length; i++) { DrawComponent(unfoldedComponents, entity, indices[i], components[i]); } } EntitasEditorLayout.EndVertical(); }
public static void DrawEntity(Pool pool, Entity entity) { var bgColor = GUI.backgroundColor; GUI.backgroundColor = Color.red; if (GUILayout.Button("Destroy Entity")) { pool.DestroyEntity(entity); } GUI.backgroundColor = bgColor; bool[] unfoldedComponents; if (!_poolToUnfoldedComponents.TryGetValue(pool, out unfoldedComponents)) { unfoldedComponents = new bool[pool.totalComponents]; for (int i = 0; i < unfoldedComponents.Length; i++) { unfoldedComponents[i] = true; } _poolToUnfoldedComponents.Add(pool, unfoldedComponents); } EntitasEditorLayout.BeginVerticalBox(); { EntitasEditorLayout.BeginHorizontal(); { EditorGUILayout.LabelField("Components (" + entity.GetComponents().Length + ")", EditorStyles.boldLabel); if (GUILayout.Button("▸", GUILayout.Width(21), GUILayout.Height(14))) { for (int i = 0; i < unfoldedComponents.Length; i++) { unfoldedComponents[i] = false; } } if (GUILayout.Button("▾", GUILayout.Width(21), GUILayout.Height(14))) { for (int i = 0; i < unfoldedComponents.Length; i++) { unfoldedComponents[i] = true; } } } EntitasEditorLayout.EndHorizontal(); EditorGUILayout.Space(); var componentNames = entity.poolMetaData.componentNames; var index = EditorGUILayout.Popup("Add Component", -1, componentNames); if (index >= 0) { var componentType = entity.poolMetaData.componentTypes[index]; var component = (IComponent)Activator.CreateInstance(componentType); entity.AddComponent(index, component); } EditorGUILayout.Space(); _componentNameSearchTerm = EditorGUILayout.TextField("Search", _componentNameSearchTerm); EditorGUILayout.Space(); var indices = entity.GetComponentIndices(); var components = entity.GetComponents(); for (int i = 0; i < components.Length; i++) { DrawComponent(unfoldedComponents, entity, indices[i], components[i]); } EditorGUILayout.Space(); EditorGUILayout.LabelField("Retained by (" + entity.retainCount + ")", EditorStyles.boldLabel); #if !ENTITAS_FAST_AND_UNSAFE EntitasEditorLayout.BeginVerticalBox(); { foreach (var owner in entity.owners.ToArray()) { EntitasEditorLayout.BeginHorizontal(); { EditorGUILayout.LabelField(owner.ToString()); if (GUILayout.Button("Release", GUILayout.Width(88), GUILayout.Height(14))) { entity.Release(owner); } EntitasEditorLayout.EndHorizontal(); } } } EntitasEditorLayout.EndVertical(); #endif } EntitasEditorLayout.EndVertical(); }