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