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