Exemple #1
0
        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);
        }
Exemple #2
0
        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);
            }
        }