Exemple #1
0
        private void ReadTriggerVolumes(EndianReader reader)
        {
            var section  = Sections[Section.TriggerVolumes];
            var name     = OffsetById(section.Node, FieldId.Name);
            var forward  = OffsetById(section.Node, FieldId.ForwardVector);
            var up       = OffsetById(section.Node, FieldId.UpVector);
            var position = OffsetById(section.Node, FieldId.Position);
            var size     = OffsetById(section.Node, FieldId.Size);

            for (int i = 0; i < section.TagBlock.Count; i++)
            {
                var volume      = new TriggerVolume(this);
                var baseAddress = section.TagBlock.Pointer.Address + section.BlockSize * i;

                reader.Seek(baseAddress + name, SeekOrigin.Begin);
                volume.Name = reader.ReadObject <StringId>();

                reader.Seek(baseAddress + forward, SeekOrigin.Begin);
                volume.ForwardVector = reader.ReadObject <RealVector3D>();

                reader.Seek(baseAddress + up, SeekOrigin.Begin);
                volume.UpVector = reader.ReadObject <RealVector3D>();

                reader.Seek(baseAddress + position, SeekOrigin.Begin);
                volume.Position = reader.ReadObject <RealVector3D>();

                reader.Seek(baseAddress + size, SeekOrigin.Begin);
                volume.Size = reader.ReadObject <RealVector3D>();

                TriggerVolumes.Add(volume);
            }
        }
 public void CopyFrom(TriggerVolume other)
 {
     Name          = other.Name;
     Position      = other.Position;
     ForwardVector = other.ForwardVector;
     UpVector      = other.UpVector;
     Size          = other.Size;
 }