Ejemplo n.º 1
0
        private void HandleChanges(Changes changes)
        {
            foreach (var created in changes.CreatedEntities())
            {
                var entity = m_WorldManager.GetEntityFromGuid(created);
                if (EntityManager.Exists(entity) && EntityManager.HasComponent <EntityName>(entity))
                {
                    m_EntityGuidToName[created] = EntityManager.GetBufferAsString <EntityName>(entity);
                }
            }

            foreach (var changed in changes.ChangedEntitiesWithAddComponent <EntityName>()
                     .Concat(changes.ChangedEntitiesWithSetComponent <EntityName>()))
            {
                var entity = m_WorldManager.GetEntityFromGuid(changed);
                if (EntityManager.Exists(entity) && EntityManager.HasComponent <EntityName>(entity))
                {
                    m_EntityGuidToName[changed] = EntityManager.GetBufferAsString <EntityName>(entity);
                }
            }

            foreach (var changed in changes.ChangedEntitiesWithRemoveComponent <EntityName>())
            {
                m_EntityGuidToName.Remove(changed);
            }

            foreach (var deleted in changes.DeletedEntities())
            {
                m_EntityGuidToName.Remove(deleted);
            }
        }
        private void HandleChanges(Changes changes)
        {
            if (m_IsUndoing)
            {
                return;
            }

            foreach (var guid in changes.CreatedEntities())
            {
                var entity = m_WorldManager.GetEntityFromGuid(guid);
                PopulateInitialComponentList(entity);
            }

            foreach (var diff in changes.WorldDiff.AddComponents)
            {
                var hash      = changes.WorldDiff.TypeHashes[diff.TypeHashIndex];
                var typeIndex = TypeManager.GetTypeIndexFromStableTypeHash(hash);
                var type      = TypeManager.GetType(typeIndex);
                if (hash == ComponentOrderHash || type.GetCustomAttributes(typeof(HideInInspectorAttribute)).Any())
                {
                    continue;
                }
                var guid   = changes.WorldDiff.Entities[diff.EntityIndex].ToGuid();
                var entity = m_WorldManager.GetEntityFromGuid(guid);
                AddTypeToBuffer(entity, hash);
            }

            foreach (var diff in changes.WorldDiff.RemoveComponents)
            {
                var hash      = changes.WorldDiff.TypeHashes[diff.TypeHashIndex];
                var typeIndex = TypeManager.GetTypeIndexFromStableTypeHash(hash);
                var type      = TypeManager.GetType(typeIndex);
                if (hash == ComponentOrderHash || type.GetCustomAttributes(typeof(HideInInspectorAttribute)).Any())
                {
                    continue;
                }
                var guid   = changes.WorldDiff.Entities[diff.EntityIndex].ToGuid();
                var entity = m_WorldManager.GetEntityFromGuid(guid);
                RemoveTypeFromBuffer(entity, hash);
            }
        }
Ejemplo n.º 3
0
        private void HandleChanges(Changes changes)
        {
            foreach (var guid in changes.CreatedEntities())
            {
                CreateLink(guid);
            }

            using (var entities = new NativeArray <Guid>(changes.DeletedEntities().ToArray(), Allocator.Temp))
            {
                DeleteLinks(entities);
            }

            using (var entities = new NativeArray <Guid>(changes.ReparentedEntities().ToArray(), Allocator.Temp))
            {
                ReparentLinks(entities);
            }

            using (var entities = new NativeArray <Guid>(changes.EnabledStateChanged().ToArray(), Allocator.Temp))
            {
                SetEnabledState(entities);
            }
        }