Rev 1607 |
Blame |
Compare with Previous |
Last modification |
View Log
| RSS feed
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using BauzoidNET.math;
using EndianHandling;
namespace BurutaruEditor
.file
{
public class BinarySerializer
: Serializer
{
//======================================================================================================================================================
private FileStream mFileStream
= null;
private EndianBinaryWriter mWriter
= null;
private EndianBinaryReader mReader
= null;
//======================================================================================================================================================
public BinarySerializer
(string filename, OpenMode mode
)
: base(filename, mode
)
{
if (isOpenForReading
())
{
mFileStream
= File
.OpenRead(filename
);
mReader
= new EndianBinaryReader
(mFileStream, Encoding
.ASCII,
true);
}
else if (isOpenForWriting
())
{
mFileStream
= File
.OpenWrite(filename
);
mWriter
= new EndianBinaryWriter
(mFileStream, Encoding
.ASCII,
true);
}
}
public override void Close
()
{
mReader
= null;
mWriter
= null;
mFileStream
.Close();
}
//======================================================================================================================================================
public override void Write
(string str
)
{
byte[] bytes
= Encoding
.ASCII.GetBytes(str
);
mWriter
.Write(bytes
.Length);
mWriter
.Write(bytes
);
}
public override void Write
(float number
)
{
mWriter
.Write(number
);
}
public override void Write
(int number
)
{
mWriter
.Write(number
);
}
public override void Write
(Vector2 v
)
{
mWriter
.Write(v
.x);
mWriter
.Write(v
.y);
}
public override void Write
(Vector3 v
)
{
mWriter
.Write(v
.x);
mWriter
.Write(v
.y);
mWriter
.Write(v
.z);
}
public override void Write
(Vector4 v
)
{
mWriter
.Write(v
.x);
mWriter
.Write(v
.y);
mWriter
.Write(v
.z);
mWriter
.Write(v
.w);
}
public override void Write
(bool v
)
{
Write
(v
? 1 : 0);
}
public override string ReadString
()
{
int count
;
string data
;
mReader
.ReadInt32(out count
);
mReader
.ReadString(count,
out data
);
return data
;
}
public override float ReadFloat
()
{
float result
;
mReader
.ReadSingle(out result
);
return result
;
}
public override int ReadInt
()
{
int result
;
mReader
.ReadInt32(out result
);
return result
;
}
public override Vector2 ReadVector2
()
{
float x
= ReadFloat
();
float y
= ReadFloat
();
return new Vector2
(x, y
);
}
public override bool ReadBool
()
{
int n
= ReadInt
();
return (n
!= 0);
}
//======================================================================================================================================================
}
}