public Entity CreateFromCopy(Entity original) { Debug.Assert((bool)original); Entity clone = Create(); ComponentMask mask = original.ComponentMask(); for (int i = 0; i < m_ComponentHelpers.Count; i++) { BaseComponentHelper helper = m_ComponentHelpers[i]; if (helper != null && mask[i]) { helper.CopyComponentTo(original, clone); } } return(clone); }
public void Destroy(Entity.Id entity) { AssertValidID(entity); int index = (int)entity.Index; ComponentMask mask = m_EntityComponentMasks[index]; for (int i = 0; i < m_ComponentHelpers.Count; i++) { BaseComponentHelper helper = m_ComponentHelpers[i]; if (helper != null && mask[i]) { helper.RemoveComponent(new Entity(this, entity)); } } m_EntityComponentMasks[index].Reset(); m_EntityVersions[index]++; m_FreeList.Add((uint)index); }