예제 #1
0
        internal void ReadFrom(BinaryReader reader, MapCamerasFormatVersion formatVersion, bool useNewFormat)
        {
            TargetPosition    = new Vector2(reader.ReadSingle(), reader.ReadSingle());
            ZOffset           = reader.ReadSingle();
            Rotation          = reader.ReadSingle();
            AngleOfAttack     = reader.ReadSingle();
            TargetDistance    = reader.ReadSingle();
            Roll              = reader.ReadSingle();
            FieldOfView       = reader.ReadSingle();
            FarClippingPlane  = reader.ReadSingle();
            NearClippingPlane = reader.ReadSingle();

            if (useNewFormat)
            {
                LocalPitch = reader.ReadSingle();
                LocalYaw   = reader.ReadSingle();
                LocalRoll  = reader.ReadSingle();
            }

            Name = reader.ReadChars();
            if (string.IsNullOrWhiteSpace(Name))
            {
                throw new InvalidDataException($"Camera name must contain at least one non-whitespace character.");
            }
        }
예제 #2
0
        internal void WriteTo(BinaryWriter writer, MapCamerasFormatVersion formatVersion, bool useNewFormat)
        {
            writer.Write(TargetPosition.X);
            writer.Write(TargetPosition.Y);
            writer.Write(ZOffset);
            writer.Write(Rotation);
            writer.Write(AngleOfAttack);
            writer.Write(TargetDistance);
            writer.Write(Roll);
            writer.Write(FieldOfView);
            writer.Write(FarClippingPlane);
            writer.Write(NearClippingPlane);

            if (useNewFormat)
            {
                writer.Write(LocalPitch);
                writer.Write(LocalYaw);
                writer.Write(LocalRoll);
            }

            writer.WriteString(Name);
        }
예제 #3
0
 public static Camera ReadCamera(this BinaryReader reader, MapCamerasFormatVersion formatVersion, bool useNewFormat) => new Camera(reader, formatVersion, useNewFormat);
예제 #4
0
 public static void Write(this BinaryWriter writer, Camera camera, MapCamerasFormatVersion formatVersion, bool useNewFormat) => camera.WriteTo(writer, formatVersion, useNewFormat);
예제 #5
0
 /// <summary>
 /// Initializes a new instance of the <see cref="MapCameras"/> class.
 /// </summary>
 /// <param name="formatVersion"></param>
 public MapCameras(MapCamerasFormatVersion formatVersion, bool useNewFormat)
 {
     FormatVersion = formatVersion;
     UseNewFormat  = useNewFormat;
 }
예제 #6
0
 internal Camera(BinaryReader reader, MapCamerasFormatVersion formatVersion, bool useNewFormat)
 {
     ReadFrom(reader, formatVersion, useNewFormat);
 }