Exemplo n.º 1
0
        /// <summary>
        /// Export the assigned node to the assigned file.
        /// </summary>
        /// <returns>Returns the result when the behaviour is exported.</returns>
        public override FileManagers.SaveResult Export()
        {
            string filename = Path.Combine(_outputFolder, _filename);

            FileManagers.SaveResult result = FileManagers.FileManager.MakeWritable(filename, Resources.ExportFileWarning);
            if (FileManagers.SaveResult.Succeeded != result)
            {
                return(result);
            }

            // get the abolute folder of the file we want toexport
            string folder = Path.GetDirectoryName(filename);

            if (!Directory.Exists(folder))
            {
                Directory.CreateDirectory(folder);
            }

            using (var ms = new MemoryStream())
                using (var writer = new BinaryWriter(ms))
                {
                    //BsonSerializer.Serialize(writer, _node);
                    BsonSerializer serializer = BsonSerializer.CreateSerialize(writer);
                    serializer.WriteStartDocument();
                    ExportBehavior(serializer, _node);
                    serializer.WriteEndDocument();


                    // export to the file
                    using (FileStream fs = File.Create(filename))
                    {
                        //BinaryFormatter formatter = new BinaryFormatter();
                        //formatter.Serialize(file, d);

                        using (BinaryWriter w = new BinaryWriter(fs))
                        {
                            byte[] d = ms.ToArray();

                            w.Write(d);
                            fs.Close();
                        }
                    }

                    //ms.Position = 0;

                    //using (var reader = new BinaryReader(ms))
                    //{
                    //    Nodes.BehaviorNode b = BsonDeserializer.Deserializer<Nodes.BehaviorNode>(reader);
                    //}
                }

            return(FileManagers.SaveResult.Succeeded);
        }
Exemplo n.º 2
0
        //public override FileManagers.SaveResult InitWriter()
        //{
        //    Debug.Check(Plugin.ConcurrentProcessBehaviors);

        //    string filename = Path.Combine(_outputFolder, _filename);
        //    FileManagers.SaveResult result = FileManagers.FileManager.MakeWritable(filename, Resources.ExportFileWarning);

        //    if (FileManagers.SaveResult.Succeeded != result)
        //    {
        //        return result;
        //    }

        //    // get the abolute folder of the file we want toexport
        //    string folder = Path.GetDirectoryName(filename);

        //    if (!Directory.Exists(folder))
        //    {
        //        Directory.CreateDirectory(folder);
        //    }

        //    try
        //    {
        //        Plugin.ConcurrentBsonFileStreams[filename] = File.Create(filename);
        //    }
        //    catch
        //    {
        //        Debug.Check(false, filename);

        //        return FileManagers.SaveResult.Failed;
        //    }

        //    return FileManagers.SaveResult.Succeeded;
        //}

        /// <summary>
        /// Export the assigned node to the assigned file.
        /// </summary>
        /// <returns>Returns the result when the behaviour is exported.</returns>
        public override FileManagers.SaveResult Export()
        {
            string filename = Path.Combine(_outputFolder, _filename);

            FileManagers.SaveResult result = FileManagers.FileManager.MakeWritable(filename, Resources.ExportFileWarning);

            if (FileManagers.SaveResult.Succeeded != result)
            {
                return(result);
            }

            // get the abolute folder of the file we want toexport
            string folder = Path.GetDirectoryName(filename);

            if (!Directory.Exists(folder))
            {
                Directory.CreateDirectory(folder);
            }

            using (var ms = new MemoryStream())
                using (var writer = new BinaryWriter(ms))
                {
                    //BsonSerializer.Serialize(writer, _node);
                    BsonSerializer serializer = BsonSerializer.CreateSerialize(writer);
                    serializer.WriteStartDocument();
                    ExportBehavior(serializer, _node);
                    serializer.WriteEndDocument();

                    FileStream fs = null;
                    //if (Plugin.ConcurrentProcessBehaviors)
                    //{
                    //    fs = Plugin.ConcurrentBsonFileStreams.GetValueUnsafe(filename);
                    //}
                    if (fs == null)
                    {
                        fs = File.Create(filename);
                    }

                    // export to the file
                    using (BinaryWriter w = new BinaryWriter(fs))
                    {
                        byte[] d = ms.ToArray();

                        w.Write(d);

                        fs.Close();
                    }
                }

            return(FileManagers.SaveResult.Succeeded);
        }