public EntityComponentInitializer BuildDeserializedEntity(EGID egid,
                                                                  ISerializationData serializationData,
                                                                  ISerializableEntityDescriptor entityDescriptor,
                                                                  int serializationType,
                                                                  IEntitySerialization entitySerialization)
        {
            var initializer = _factory.BuildEntity <T>(egid, _implementors);

            entitySerialization.DeserializeEntityComponents(serializationData, entityDescriptor, ref initializer,
                                                            serializationType);

            return(initializer);
        }
        public EntityInitializer BuildDeserializedEntity
            (EGID egid, ISerializationData serializationData, ISerializableEntityDescriptor entityDescriptor
            , int serializationType, IEntitySerialization entitySerialization, IEntityFactory factory
            , bool enginesRootIsDeserializationOnly)
        {
            var entityDescriptorEntitiesToSerialize = enginesRootIsDeserializationOnly ? entityDescriptor.componentsToSerialize : entityDescriptor.componentsToBuild;

            var initializer = factory.BuildEntity(egid, entityDescriptorEntitiesToSerialize, TypeCache <T> .type, _implementors);

            entitySerialization.DeserializeEntityComponents(serializationData, entityDescriptor, ref initializer
                                                            , serializationType);

            return(initializer);
        }