/// <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); }
//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); }