static unsafe void WriteArchetypes(YamlWriter writer, EntityManager entityManager)
        {
            var entityComponentStore = entityManager.EntityComponentStore;

            GetAllArchetypes(entityComponentStore, out var archetypeToIndex, out var archetypeArray);

            using (writer.WriteCollection(k_ArchetypesCollectionTag))
            {
                foreach (var archetype in archetypeArray)
                {
                    using (writer.WriteCollection(k_ArchetypeCollectionTag))
                    {
                        var a = *archetype.Archetype;
                        writer.WriteKeyValue("name", a.ToString())
                        .WriteKeyValue(nameof(Archetype.TypesCount), a.TypesCount)
                        .WriteKeyValue(nameof(EntityArchetype.ChunkCount), archetype.ChunkCount)
                        .WriteKeyValue(nameof(EntityArchetype.ChunkCapacity), archetype.ChunkCapacity);

                        var props = new List <string>();
                        if (a.SystemStateCleanupComplete)
                        {
                            props.Add(nameof(Archetype.SystemStateCleanupComplete));
                        }
                        if (a.SystemStateCleanupNeeded)
                        {
                            props.Add(nameof(Archetype.SystemStateCleanupNeeded));
                        }
                        if (a.Disabled)
                        {
                            props.Add(nameof(Archetype.Disabled));
                        }
                        if (a.Prefab)
                        {
                            props.Add(nameof(Archetype.Prefab));
                        }
                        if (a.HasChunkComponents)
                        {
                            props.Add(nameof(Archetype.HasChunkComponents));
                        }
                        if (a.HasChunkHeader)
                        {
                            props.Add(nameof(Archetype.HasChunkHeader));
                        }
                        if (a.ContainsBlobAssetRefs)
                        {
                            props.Add(nameof(Archetype.ContainsBlobAssetRefs));
                        }
                        writer.WriteInlineSequence("properties", props);
                    }
                }
            }

            archetypeToIndex.Dispose();
        }
Example #2
0
        static unsafe void WriteArchetypes(YamlWriter writer, EntityManager entityManager)
        {
            var access = entityManager.GetCheckedEntityDataAccess();
            var entityComponentStore = access->EntityComponentStore;

            using (var archetypeArray = GetAllArchetypes(entityComponentStore, Allocator.Temp))
                using (writer.WriteCollection(k_ArchetypesCollectionTag))
                {
                    for (int i = 0; i != archetypeArray.Length; i++)
                    {
                        var a = archetypeArray.Ptr[i];
                        using (writer.WriteCollection(k_ArchetypeCollectionTag))
                        {
                            writer.WriteKeyValue("name", a->ToString())
                            .WriteKeyValue(nameof(Archetype.TypesCount), a->TypesCount)
                            .WriteKeyValue(nameof(EntityArchetype.ChunkCount), a->Chunks.Count)
                            .WriteKeyValue(nameof(EntityArchetype.ChunkCapacity), a->ChunkCapacity);

                            var props = new List <string>();
                            if (a->SystemStateCleanupComplete)
                            {
                                props.Add(nameof(Archetype.SystemStateCleanupComplete));
                            }
                            if (a->SystemStateCleanupNeeded)
                            {
                                props.Add(nameof(Archetype.SystemStateCleanupNeeded));
                            }
                            if (a->Disabled)
                            {
                                props.Add(nameof(Archetype.Disabled));
                            }
                            if (a->Prefab)
                            {
                                props.Add(nameof(Archetype.Prefab));
                            }
                            if (a->HasChunkComponents)
                            {
                                props.Add(nameof(Archetype.HasChunkComponents));
                            }
                            if (a->HasChunkHeader)
                            {
                                props.Add(nameof(Archetype.HasChunkHeader));
                            }
                            if (a->ContainsBlobAssetRefs)
                            {
                                props.Add(nameof(Archetype.ContainsBlobAssetRefs));
                            }
                            writer.WriteInlineSequence("properties", props);
                        }
                    }
                }
        }