Beispiel #1
0
        public static void SavePrefab(Entity entity, string name)
        {
            FileInfo file = new FileInfo(Path.Combine(PrefabDirectory, name + ".prefab"));

            try
            {
                TagCompound obj = new TagCompound();
                obj.AddProperty("name", entity.Name);
                obj.AddProperty("active", entity.Active);
                TagCompound componentRoot = new TagCompound();
                obj.AddProperty("components", componentRoot);
                foreach (Component component in entity.Components)
                {
                    componentRoot.AddProperty(component.ComponentName, component);
                }

                using (BinaryWriter writer = new BinaryWriter(new FileStream(file.FullName, FileMode.Create)))
                {
                    Master.Write(obj, writer);
                }
                Refresh();
            }
            catch (FormatException x)
            {
                Console.WriteLine(x.Message);
            }
        }
Beispiel #2
0
        public void Save()
        {
            TagMaster tagMaster = new TagMaster();

            tagMaster.RegisterConverter(new NumberConverter <byte>());
            tagMaster.RegisterConverter(new NumberConverter <short>());
            tagMaster.RegisterConverter(new NumberConverter <int>());
            tagMaster.RegisterConverter(new NumberConverter <float>());
            tagMaster.RegisterConverter(new NumberConverter <long>());
            tagMaster.RegisterConverter(new NumberConverter <double>());
            tagMaster.RegisterConverter(new StringConverter());

            tagMaster.RegisterConverter(new ListConverter <long>());
            tagMaster.RegisterConverter(new ListConverter <int>());
            foreach (ITagConverter converter in Converters)
            {
                tagMaster.RegisterConverter(converter);
            }

            TagCompound root = new TagCompound();

            TagCompound sceneRoot = new TagCompound();

            root.AddProperty("scene", sceneRoot);

            sceneRoot.AddProperty("name", Scene.Name);

            sceneRoot.AddProperty("viewport", Scene.CurrentViewport);

            {
                TagList entities = new TagList();
                sceneRoot.AddProperty("entities", entities);
                foreach (Entity entity in Scene.Entities)
                {
                    TagCompound entityObj = new TagCompound();
                    entities.Add(entityObj);
                    entityObj.AddProperty("name", entity.Name);
                    entityObj.AddProperty("id", entity.Id);
                    entityObj.AddProperty("active", entity.Active);
                    TagCompound components = new TagCompound();
                    entityObj.AddProperty("components", components);
                    foreach (Component component in entity.Components)
                    {
                        components.AddProperty(component.ComponentName, component);
                    }
                }
            }

            {
                TagList systems = new TagList();
                sceneRoot.AddProperty("systems", systems);
                foreach (ComponentSystem system in Scene.Systems)
                {
                    if (system.ShouldSave)
                    {
                        systems.Add(system.SystemName);
                    }
                }
            }

            BinaryWriter writer = new BinaryWriter(new FileStream(Path, FileMode.Create));

            tagMaster.Write(root, writer);
            writer.Close();
            writer.Dispose();
        }