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

            entitySerialization.DeserializeEntityStructs(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);
        }
Ejemplo n.º 3
0
            void RegisterEntityDescriptor(ISerializableEntityDescriptor descriptor)
            {
                if (descriptor == null)
                {
                    return;
                }

                uint descriptorHash = descriptor.hash;

#if DEBUG && !PROFILE_SVELTO
                if (_descriptors.ContainsKey(descriptorHash))
                {
                    throw new Exception($"Hash Collision of '{descriptor.GetType()}' against " +
                                        $"'{_descriptors[descriptorHash]} ::: {descriptorHash}'");
                }
#endif

                _descriptors[descriptorHash] = descriptor;
            }
            static void RegisterEntityDescriptor(ISerializableEntityDescriptor descriptor, Type type, Type d1)
            {
                if (descriptor == null)
                {
                    return;
                }

                uint descriptorHash = descriptor.hash;

#if DEBUG && !PROFILE_SVELTO
                if (_descriptors.ContainsKey(descriptorHash))
                {
                    throw new Exception($"Hash Collision of '{descriptor.GetType()}' against "
                                        + $"'{_descriptors[descriptorHash]} ::: {descriptorHash}'");
                }
#endif
                _descriptors[descriptorHash] = descriptor;
                Type[] typeArgs        = { type };
                var    makeGenericType = d1.MakeGenericType(typeArgs);
                var    instance        = Activator.CreateInstance(makeGenericType);
                _defaultFactories.Add(descriptorHash, instance as IDeserializationFactory);
            }