Esempio n. 1
0
        public static void LoadAssets(EngineContext engineContext)
        {
            var fileStream = new FileStream(@"C:\DEV\hotei_scene\scene.hotei", FileMode.Open, FileAccess.Read);
            var entities   = LoadEntities(fileStream);

            fileStream.Close();

            foreach (var entityDefinition in entities)
            {
                var entity = engineContext.EntityManager.Entities.FirstOrDefault(x => x.Guid == entityDefinition.Guid);
                if (entity == null)
                {
                    entity = new Entity(entityDefinition.Guid);
                    engineContext.EntityManager.AddEntity(entity);
                }

                foreach (var componentDefinition in entityDefinition.Components)
                {
                    EntityComponent component = null;
                    if (componentDefinition.Name == "TransformationComponent")
                    {
                        component = entity.Get(TransformationComponent.Key);
                        if (component == null)
                        {
                            component = new TransformationTRSComponent();
                            entity.Set(TransformationComponent.Key, (TransformationComponent)component);
                        }
                    }
                    else
                    {
                        continue;
                    }

                    foreach (var componentProperty in componentDefinition.Properties)
                    {
                        switch (componentProperty.Type)
                        {
                        case EntityComponentPropertyType.Field:
                            var field = component.GetType().GetField(componentProperty.Name);
                            field.SetValue(component, Decode(componentProperty.Data));
                            break;

                        case EntityComponentPropertyType.Property:
                            var property = component.GetType().GetProperty(componentProperty.Name);
                            property.SetValue(component, Decode(componentProperty.Data), null);
                            break;

                        default:
                            throw new NotImplementedException();
                        }
                    }
                }
            }
        }
Esempio n. 2
0
        public static void LoadAssets(EngineContext engineContext)
        {
            var fileStream = new FileStream(@"C:\DEV\hotei_scene\scene.hotei", FileMode.Open, FileAccess.Read);
            var entities = LoadEntities(fileStream);
            fileStream.Close();

            foreach (var entityDefinition in entities)
            {
                var entity = engineContext.EntityManager.Entities.FirstOrDefault(x => x.Guid == entityDefinition.Guid);
                if (entity == null)
                {
                    entity = new Entity(entityDefinition.Guid);
                    engineContext.EntityManager.AddEntity(entity);
                }

                foreach (var componentDefinition in entityDefinition.Components)
                {
                    EntityComponent component = null;
                    if (componentDefinition.Name == "TransformationComponent")
                    {
                        component = entity.Get(TransformationComponent.Key);
                        if (component == null)
                        {
                            component = new TransformationTRSComponent();
                            entity.Set(TransformationComponent.Key, (TransformationComponent)component);
                        }
                    }
                    else
                    {
                        continue;
                    }

                    foreach (var componentProperty in componentDefinition.Properties)
                    {
                        switch (componentProperty.Type)
                        {
                            case EntityComponentPropertyType.Field:
                                var field = component.GetType().GetField(componentProperty.Name);
                                field.SetValue(component, Decode(componentProperty.Data));
                                break;
                            case EntityComponentPropertyType.Property:
                                var property = component.GetType().GetProperty(componentProperty.Name);
                                property.SetValue(component, Decode(componentProperty.Data), null);
                                break;
                            default:
                                throw new NotImplementedException();
                        }
                    }
                }
            }
        }