private void BindArea(AiArea area, Helix.Element3D model) { var binding = new Binding(nameof(AiArea.Position)) { Converter = TranslationTransformConverter.Instance, Mode = BindingMode.TwoWay }; model.DataContext = area; BindingOperations.SetBinding(model, Helix.Element3D.TransformProperty, binding); }
private void ReadAreas(EndianReader reader, AiZone owner, long rootAddress) { var blockNode = SquadHierarchy.AiNodes[AiSection.Areas]; var blockRef = new BlockReference(blockNode, reader, rootAddress); var name = OffsetById(blockNode, FieldId.Name); var position = OffsetById(blockNode, FieldId.Position); for (int i = 0; i < blockRef.TagBlock.Count; i++) { var area = new AiArea(this, owner, blockRef, i); var baseAddress = blockRef.TagBlock.Pointer.Address + blockRef.BlockSize * i; reader.Seek(baseAddress + name, SeekOrigin.Begin); area.Name = reader.ReadNullTerminatedString(32); reader.Seek(baseAddress + position, SeekOrigin.Begin); area.Position = reader.ReadObject <RealVector3D>(); owner.Areas.Add(area); } }