ace/Source/ACE.DatLoader/Entity/PositionExtensions.cs
OptimShi 732e68391c More Dat Parsing Updates (#503)
* More Portal.Dat Parsing

* Update

* Fixed Palette, removed Debug commands

* Fixed spacing issue

* Added ContractTable
2017-09-06 10:16:49 -04:00

59 lines
1.9 KiB
C#

using ACE.Entity;
namespace ACE.DatLoader.Entity
{
/// <summary>
/// Helper function to read position data from dat files
/// </summary>
public static class PositionExtensions
{
/// <summary>
/// Reads and returns a full spatial position with X,Y,Z and Quaternion W,X,Y,Z values.
/// </summary>
public static Position ReadPosition(DatReader datReader)
{
Position p = new Position();
p.Read(datReader);
return p;
}
/// <summary>
/// Reads and returns just the X,Y,Z portal of a Position
/// </summary>
public static Position ReadPositionFrame(DatReader datReader)
{
Position p = new Position();
p.ReadFrame(datReader);
return p;
}
/// <summary>
/// Reads and returns a full position with Landblock, X,Y,Z and Quaternion W,X,Y,Z values.
/// </summary>
public static Position ReadLandblockPosition(DatReader datReader)
{
Position p = new Position();
p.Cell = datReader.ReadUInt32();
p.Read(datReader);
return p;
}
public static void Read(this Position p, DatReader datReader)
{
p.PositionX = datReader.ReadSingle();
p.PositionY = datReader.ReadSingle();
p.PositionZ = datReader.ReadSingle();
p.RotationW = datReader.ReadSingle();
p.RotationX = datReader.ReadSingle();
p.RotationY = datReader.ReadSingle();
p.RotationZ = datReader.ReadSingle();
}
public static void ReadFrame(this Position p, DatReader datReader)
{
p.PositionX = datReader.ReadSingle();
p.PositionY = datReader.ReadSingle();
p.PositionZ = datReader.ReadSingle();
}
}
}