Exemplo n.º 1
0
        /// <inheritdoc />
        public void CreateAnalog(SmartEntity sourceEntity, bool copyLayer)
        {
#if !DEBUG
            ModPlusAPI.Statistic.SendCommandStarting(
                GroundLine.GetDescriptor().Name, ModPlusConnector.Instance.AvailProductExternalVersion);
#endif

            try
            {
                Overrule.Overruling = false;

                /* Регистрация ЕСКД приложения должна запускаться при запуске
                 * функции, т.к. регистрация происходит в текущем документе
                 * При инициализации плагина регистрации нет!
                 */
                ExtendedDataUtils.AddRegAppTableRecord(GroundLine.GetDescriptor());

                var groundLine     = new GroundLine();
                var blockReference = MainFunction.CreateBlock(groundLine);

                groundLine.SetPropertiesFromSmartEntity(sourceEntity, copyLayer);

                LinearEntityUtils.InsertWithJig(groundLine, blockReference);
            }
            catch (System.Exception exception)
            {
                ExceptionBox.Show(exception);
            }
            finally
            {
                Overrule.Overruling = true;
            }
        }
Exemplo n.º 2
0
        private static void CreateBreakLine(BreakLineType breakLineType)
        {
            // send statistic
            Statistic.SendCommandStarting(BreakLineDescriptor.Instance.Name, ModPlusConnector.Instance.AvailProductExternalVersion);
            try
            {
                Overrule.Overruling = false;

                /* Регистрация ЕСКД приложения должна запускаться при запуске
                 * функции, т.к. регистрация происходит в текущем документе
                 * При инициализации плагина регистрации нет!
                 */
                ExtendedDataUtils.AddRegAppTableRecord(BreakLineDescriptor.Instance.Name);
                var style     = StyleManager.GetCurrentStyle(typeof(BreakLine));
                var breakLine = new BreakLine();

                var blockReference = MainFunction.CreateBlock(breakLine);
                breakLine.ApplyStyle(style, true);
                breakLine.BreakLineType = breakLineType;

                InsertBreakLineWithJig(breakLine, blockReference);
            }
            catch (System.Exception exception)
            {
                ExceptionBox.Show(exception);
            }
            finally
            {
                Overrule.Overruling = true;
            }
        }
Exemplo n.º 3
0
        private static void CreateSection(bool isSimple)
        {
#if !DEBUG
            Statistic.SendCommandStarting(Section.GetDescriptor().Name, ModPlusConnector.Instance.AvailProductExternalVersion);
#endif
            try
            {
                Overrule.Overruling = false;

                /* Регистрация ЕСКД приложения должна запускаться при запуске
                 * функции, т.к. регистрация происходит в текущем документе
                 * При инициализации плагина регистрации нет!
                 */
                ExtendedDataUtils.AddRegAppTableRecord(Section.GetDescriptor());

                var style = StyleManager.GetCurrentStyle(typeof(Section));
                var sectionLastLetterValue  = string.Empty;
                var sectionLastIntegerValue = string.Empty;
                FindLastSectionValues(ref sectionLastLetterValue, ref sectionLastIntegerValue);
                var section = new Section(sectionLastIntegerValue, sectionLastLetterValue);

                var blockReference = MainFunction.CreateBlock(section);
                section.ApplyStyle(style, true);

                InsertSectionWithJig(isSimple, section, blockReference);
            }
            catch (System.Exception exception)
            {
                ExceptionBox.Show(exception);
            }
            finally
            {
                Overrule.Overruling = true;
            }
        }
Exemplo n.º 4
0
        /// <inheritdoc/>
        public void CreateAnalog(SmartEntity sourceEntity, bool copyLayer)
        {
#if !DEBUG
            Statistic.SendCommandStarting(NodalLeader.GetDescriptor().Name, ModPlusConnector.Instance.AvailProductExternalVersion);
#endif
            try
            {
                Overrule.Overruling = false;

                /* Регистрация ЕСКД приложения должна запускаться при запуске
                 * функции, т.к. регистрация происходит в текущем документе
                 * При инициализации плагина регистрации нет!
                 */
                ExtendedDataUtils.AddRegAppTableRecord(NodalLeader.GetDescriptor());
                var lastNodeNumber = FindLastNodeNumber();
                var nodalLeader    = new NodalLeader(lastNodeNumber);
                var blockReference = MainFunction.CreateBlock(nodalLeader);
                nodalLeader.SetPropertiesFromSmartEntity(sourceEntity, copyLayer);

                InsertNodalLeaderWithJig(nodalLeader, blockReference);
            }
            catch (Exception exception)
            {
                ExceptionBox.Show(exception);
            }
            finally
            {
                Overrule.Overruling = true;
            }
        }
Exemplo n.º 5
0
        /// <inheritdoc/>
        public void CreateAnalog(IntellectualEntity sourceEntity, bool copyLayer)
        {
#if !DEBUG
            Statistic.SendCommandStarting(LevelMarkDescriptor.Instance.Name, ModPlusConnector.Instance.AvailProductExternalVersion);
#endif
            try
            {
                Overrule.Overruling = false;

                /* Регистрация ЕСКД приложения должна запускаться при запуске
                 * функции, т.к. регистрация происходит в текущем документе
                 * При инициализации плагина регистрации нет!
                 */
                ExtendedDataUtils.AddRegAppTableRecord(LevelMarkDescriptor.Instance.Name);
                var levelMark = new LevelMark();

                var blockReference = MainFunction.CreateBlock(levelMark);

                levelMark.SetPropertiesFromIntellectualEntity(sourceEntity, copyLayer);

                InsertLevelMarkWithJig(levelMark, blockReference);
            }
            catch (System.Exception exception)
            {
                ExceptionBox.Show(exception);
            }
            finally
            {
                Overrule.Overruling = true;
            }
        }
Exemplo n.º 6
0
        private static void CreateLevelMark()
        {
#if !DEBUG
            Statistic.SendCommandStarting(
                LevelMark.GetDescriptor().Name, ModPlusConnector.Instance.AvailProductExternalVersion);
#endif
            try
            {
                Overrule.Overruling = false;

                /* Регистрация ЕСКД приложения должна запускаться при запуске
                 * функции, т.к. регистрация происходит в текущем документе
                 * При инициализации плагина регистрации нет!
                 */
                ExtendedDataUtils.AddRegAppTableRecord(LevelMark.GetDescriptor());
                var style     = StyleManager.GetCurrentStyle(typeof(LevelMark));
                var levelMark = new LevelMark();

                var blockReference = MainFunction.CreateBlock(levelMark);
                levelMark.ApplyStyle(style, true);

                InsertLevelMarkWithJig(levelMark, blockReference);
            }
            catch (Exception exception)
            {
                ExceptionBox.Show(exception);
            }
            finally
            {
                Overrule.Overruling = true;
            }
        }
Exemplo n.º 7
0
        /// <inheritdoc />
        public void CreateAnalog(SmartEntity sourceEntity, bool copyLayer)
        {
#if !DEBUG
            Statistic.SendCommandStarting(Section.GetDescriptor().Name, ModPlusConnector.Instance.AvailProductExternalVersion);
#endif
            try
            {
                Overrule.Overruling = false;

                /* Регистрация ЕСКД приложения должна запускаться при запуске
                 * функции, т.к. регистрация происходит в текущем документе
                 * При инициализации плагина регистрации нет!
                 */
                ExtendedDataUtils.AddRegAppTableRecord(Section.GetDescriptor());

                var sectionLastLetterValue  = string.Empty;
                var sectionLastIntegerValue = string.Empty;
                FindLastSectionValues(ref sectionLastLetterValue, ref sectionLastIntegerValue);
                var section = new Section(sectionLastIntegerValue, sectionLastLetterValue);

                var blockReference = MainFunction.CreateBlock(section);

                section.SetPropertiesFromSmartEntity(sourceEntity, copyLayer);

                InsertSectionWithJig(true, section, blockReference);
            }
            catch (System.Exception exception)
            {
                ExceptionBox.Show(exception);
            }
            finally
            {
                Overrule.Overruling = true;
            }
        }
Exemplo n.º 8
0
        private void CreateGroundLine()
        {
            try
            {
                Overrule.Overruling = false;

                /* Регистрация ЕСКД приложения должна запускаться при запуске
                 * функции, т.к. регистрация происходит в текущем документе
                 * При инициализации плагина регистрации нет!
                 */
                ExtendedDataUtils.AddRegAppTableRecord(GroundLine.GetDescriptor());

                var style      = StyleManager.GetCurrentStyle(typeof(GroundLine));
                var groundLine = new GroundLine();

                var blockReference = MainFunction.CreateBlock(groundLine);
                groundLine.ApplyStyle(style, true);

                LinearEntityUtils.InsertWithJig(groundLine, blockReference);
            }
            catch (System.Exception exception)
            {
                ExceptionBox.Show(exception);
            }
            finally
            {
                Overrule.Overruling = true;
            }
        }
Exemplo n.º 9
0
 public static void ApplyDataToGameObject(GameObject obj, CompoundDataPiece piece)
 {
     foreach (var participant in obj.GetComponents <Participant>())
     {
         if (HasValidDataForParticipant(participant, piece))
         {
             participant.ReadData(ExtendedDataUtils.GetPieceForParticipantFromRoot(participant, piece));
         }
     }
 }
Exemplo n.º 10
0
 /// <summary>
 /// Register a <see cref="Component"/> that will take part in the extended data system
 /// </summary>
 /// <typeparam name="T">Type of the participant to register</typeparam>
 public static void RegisterDataParticipant <T>() where T : Component, ExtendedData.Participant
 {
     GetSaveInfo().onExtendedActorDataLoaded += (model, obj, tag) =>
     {
         if (tag.HasPiece(ExtendedDataUtils.GetParticipantName(typeof(T))))
         {
             obj.AddComponent <T>();
         }
     };
 }
Exemplo n.º 11
0
        /// <summary>
        /// Обработка двойного клика по блоку
        /// </summary>
        private static void AcApp_BeginDoubleClick(object sender, BeginDoubleClickEventArgs e)
        {
            var psr = AcadUtils.Editor.SelectImplied();

            if (psr.Status != PromptStatus.OK)
            {
                return;
            }

            var ids = psr.Value.GetObjectIds();

            if (ids.Length != 1)
            {
                return;
            }

            using (AcadUtils.Document.LockDocument())
            {
                using (var tr = AcadUtils.Document.TransactionManager.StartTransaction())
                {
                    var obj = tr.GetObject(ids[0], OpenMode.ForWrite, true, true);
                    if (obj is BlockReference blockReference)
                    {
                        var applicableAppName = ExtendedDataUtils.ApplicableAppName(blockReference);

                        if (string.IsNullOrEmpty(applicableAppName))
                        {
                            BeditCommandWatcher.UseBedit = true;
                        }
                        else if (applicableAppName == AxisDescriptor.Instance.Name)
                        {
                            EntityUtils.DoubleClickEdit(blockReference, entity => new AxisValueEditor(entity));
                        }
                        else if (applicableAppName == SectionDescriptor.Instance.Name)
                        {
                            EntityUtils.DoubleClickEdit(blockReference, entity => new SectionValueEditor(entity));
                        }
                        else if (applicableAppName == LevelMarkDescriptor.Instance.Name)
                        {
                            EntityUtils.DoubleClickEdit(blockReference, entity => new LevelMarkValueEditor(entity));
                        }
                        else
                        {
                            BeditCommandWatcher.UseBedit = true;
                        }
                    }
                    else
                    {
                        BeditCommandWatcher.UseBedit = true;
                    }

                    tr.Commit();
                }
            }
        }
Exemplo n.º 12
0
        public static CompoundDataPiece ReadDataFromGameObject(GameObject obj)
        {
            var newCompound = new CompoundDataPiece("root");

            foreach (var participant in obj.GetComponents <Participant>())
            {
                participant.WriteData(ExtendedDataUtils.GetPieceForParticipantFromRoot(participant, newCompound));
            }

            return(newCompound);
        }
        public void CreateWaterProofingFromPolylineCommand()
        {
#if !DEBUG
            ModPlusAPI.Statistic.SendCommandStarting(
                "mpWaterProofingFromPolyline", ModPlusConnector.Instance.AvailProductExternalVersion);
#endif

            /* Регистрация ЕСКД приложения должна запускаться при запуске
             * функции, т.к. регистрация происходит в текущем документе
             * При инициализации плагина регистрации нет!
             */
            ExtendedDataUtils.AddRegAppTableRecord(WaterProofing.GetDescriptor());
            LinearEntityUtils.CreateFromPolyline <WaterProofing>();
        }
Exemplo n.º 14
0
        /// <inheritdoc />
        public void CreateAnalog(SmartEntity sourceEntity, bool copyLayer)
        {
#if !DEBUG
            ModPlusAPI.Statistic.SendCommandStarting(
                Axis.GetDescriptor().Name, ModPlusConnector.Instance.AvailProductExternalVersion);
#endif

            try
            {
                Overrule.Overruling = false;

                /* Регистрация ЕСКД приложения должна запускаться при запуске
                 * функции, т.к. регистрация происходит в текущем документе
                 * При инициализации плагина регистрации нет!
                 */
                ExtendedDataUtils.AddRegAppTableRecord(Axis.GetDescriptor());

                var axisLastHorizontalValue = string.Empty;
                var axisLastVerticalValue   = string.Empty;
                FindLastAxisValues(ref axisLastHorizontalValue, ref axisLastVerticalValue);
                var axis = new Axis(axisLastHorizontalValue, axisLastVerticalValue);

                var blockReference = MainFunction.CreateBlock(axis);

                axis.SetPropertiesFromSmartEntity(sourceEntity, copyLayer);

                // Отключаю видимость кружков направления
                axis.TopOrientMarkerVisible    = false;
                axis.BottomOrientMarkerVisible = false;

                InsertAxisWithJig(axis, blockReference);
            }
            catch (Exception exception)
            {
                ExceptionBox.Show(exception);
            }
            finally
            {
                Overrule.Overruling = true;
            }
        }
Exemplo n.º 15
0
        private static void Document_ImpliedSelectionChanged(object sender, EventArgs e)
        {
            var psr    = AcadUtils.Editor.SelectImplied();
            var detach = true;

            if (psr.Value != null && psr.Value.Count == 1)
            {
                using (AcadUtils.Document.LockDocument())
                {
                    using (var tr = new OpenCloseTransaction())
                    {
                        foreach (SelectedObject selectedObject in psr.Value)
                        {
                            if (selectedObject.ObjectId == ObjectId.Null)
                            {
                                continue;
                            }

                            var obj = tr.GetObject(selectedObject.ObjectId, OpenMode.ForRead);
                            if (obj is BlockReference blockReference &&
                                ExtendedDataUtils.IsApplicable(blockReference))
                            {
                                AttachCreateAnalogContextMenu();
                                detach = false;
                            }
                        }

                        tr.Commit();
                    }
                }
            }

            if (detach)
            {
                DetachCreateAnalogContextMenu();
            }
        }
Exemplo n.º 16
0
        private static void CreateAxis()
        {
#if !DEBUG
            ModPlusAPI.Statistic.SendCommandStarting(
                Axis.GetDescriptor().Name, ModPlusConnector.Instance.AvailProductExternalVersion);
#endif
            try
            {
                Overrule.Overruling = false;

                /* Регистрация ЕСКД приложения должна запускаться при запуске
                 * функции, т.к. регистрация происходит в текущем документе
                 * При инициализации плагина регистрации нет!
                 */
                ExtendedDataUtils.AddRegAppTableRecord(Axis.GetDescriptor());

                var style = StyleManager.GetCurrentStyle(typeof(Axis));

                var axisLastHorizontalValue = string.Empty;
                var axisLastVerticalValue   = string.Empty;
                FindLastAxisValues(ref axisLastHorizontalValue, ref axisLastVerticalValue);
                var axis = new Axis(axisLastHorizontalValue, axisLastVerticalValue);

                var blockReference = MainFunction.CreateBlock(axis);
                axis.ApplyStyle(style, true);

                InsertAxisWithJig(axis, blockReference);
            }
            catch (Exception exception)
            {
                ExceptionBox.Show(exception);
            }
            finally
            {
                Overrule.Overruling = true;
            }
        }
Exemplo n.º 17
0
        internal static void Pull(ModdedSaveData data)
        {
            extendedActorData.Clear();
            foreach (var mod in data.segments)
            {
                Debug.Log($"mod {mod.modid} has {mod.extendedData.Count} extended actor datas");
                foreach (var extendedDataTree in mod.extendedData)
                {
                    switch (extendedDataTree.idType)
                    {
                    case ExtendedDataTree.IdentifierType.ACTOR:
                        var list = ExtendedDataUtils.GetPieceForMod(mod.modid, GetDataForActor(extendedDataTree.identifier)).DataList;
                        foreach (var h in extendedDataTree.dataPiece.DataList)
                        {
                            list.Add(h);
                        }
                        break;

                    default:
                        throw new NotImplementedException();
                    }
                }
            }
        }
Exemplo n.º 18
0
        internal static void OnRegisterActor(GameModel model, long actorId, GameObject gameObject, bool skipNotify)
        {
            if (Identifiable.GetId(gameObject) == Identifiable.Id.NONE)
            {
                return;
            }

            if (IsRegistered(actorId))
            {
                foreach (var saveInfoPair in SaveRegistry.modToSaveInfo)
                {
                    if (extendedActorData[actorId].HasPiece(saveInfoPair.Key.ModInfo.Id))
                    {
                        saveInfoPair.Value.OnExtendedActorDataLoaded(model.actors[actorId], gameObject, ExtendedDataUtils.GetPieceForMod(saveInfoPair.Key.ModInfo.Id, extendedActorData[actorId]));
                    }
                }

                foreach (var participant in gameObject.GetComponentsInChildren <ExtendedData.Participant>())
                {
                    if (!ValidateParticipant(participant, (extendedActorData[actorId])))
                    {
                        InitParticipant(participant, (extendedActorData[actorId]));
                    }
                }

                foreach (var participant in gameObject.GetComponentsInChildren <ExtendedData.Participant>())
                {
                    try
                    {
                        SetParticipant(participant, (extendedActorData[actorId]));
                    }
                    catch (InvalidOperationException)
                    {
                        Debug.Log($"Yipes! seems like {participant.GetType()} isn't initialized!");
                        // a bit gross hack but it'll help when mods add new participants to things that already have actor data stored
                        InitParticipant(participant, (extendedActorData[actorId]));
                        SetParticipant(participant, (extendedActorData[actorId]));
                    }
                }
            }
            else
            {
                var participants = gameObject.GetComponents <ExtendedData.Participant>();
                if (participants != null && participants.Length > 0)
                {
                    RegisterExtendedActorData(actorId, gameObject, skipNotify);
                }
            }
        }
 /// <inheritdoc/>
 public override bool IsApplicable(RXObject overruledSubject)
 {
     return(ExtendedDataUtils.IsApplicable(overruledSubject, GroundLineDescriptor.Instance.Name, true));
 }
Exemplo n.º 20
0
        private void CreateGroundLineFromPolyline()
        {
#if !DEBUG
            Statistic.SendCommandStarting("mpGroundLineFromPolyline", ModPlusConnector.Instance.AvailProductExternalVersion);
#endif
            try
            {
                var peo = new PromptEntityOptions($"\n{Language.GetItem(Invariables.LangItem, "msg6")}")
                {
                    AllowNone = false,
                    AllowObjectOnLockedLayer = true
                };
                peo.SetRejectMessage($"\n{Language.GetItem(Invariables.LangItem, "wrong")}");
                peo.AddAllowedClass(typeof(Polyline), true);

                var per = AcadUtils.Editor.GetEntity(peo);
                if (per.Status != PromptStatus.OK)
                {
                    return;
                }

                /* Регистрация ЕСКД приложения должна запускаться при запуске
                 * функции, т.к. регистрация происходит в текущем документе
                 * При инициализации плагина регистрации нет!
                 */
                ExtendedDataUtils.AddRegAppTableRecord(GroundLineDescriptor.Instance.Name);

                // style
                var style      = StyleManager.GetCurrentStyle(typeof(GroundLine));
                var groundLine = new GroundLine();

                MainFunction.CreateBlock(groundLine);
                groundLine.ApplyStyle(style, true);

                var plineId = per.ObjectId;

                using (AcadUtils.Document.LockDocument(DocumentLockMode.ProtectedAutoWrite, null, null, true))
                {
                    using (var tr = AcadUtils.Document.TransactionManager.StartOpenCloseTransaction())
                    {
                        var dbObj = tr.GetObject(plineId, OpenMode.ForRead);
                        if (dbObj is Polyline pline)
                        {
                            for (int i = 0; i < pline.NumberOfVertices; i++)
                            {
                                if (i == 0)
                                {
                                    groundLine.InsertionPoint = pline.GetPoint3dAt(i);
                                }
                                else if (i == pline.NumberOfVertices - 1)
                                {
                                    groundLine.EndPoint = pline.GetPoint3dAt(i);
                                }
                                else
                                {
                                    groundLine.MiddlePoints.Add(pline.GetPoint3dAt(i));
                                }
                            }

                            groundLine.UpdateEntities();
                            groundLine.BlockRecord.UpdateAnonymousBlocks();

                            var ent = (BlockReference)tr.GetObject(groundLine.BlockId, OpenMode.ForWrite, true, true);
                            ent.Position = pline.GetPoint3dAt(0);
                            ent.XData    = groundLine.GetDataForXData();
                        }

                        tr.Commit();
                    }

                    AcadUtils.Document.TransactionManager.QueueForGraphicsFlush();
                    AcadUtils.Document.TransactionManager.FlushGraphics();

                    // "Удалить исходную полилинию?"
                    if (MessageBox.ShowYesNo(Language.GetItem(Invariables.LangItem, "msg7"), MessageBoxIcon.Question))
                    {
                        using (var tr = AcadUtils.Document.TransactionManager.StartTransaction())
                        {
                            var dbObj = tr.GetObject(plineId, OpenMode.ForWrite, true, true);
                            dbObj.Erase(true);
                            tr.Commit();
                        }
                    }
                }
            }
            catch (System.Exception exception)
            {
                ExceptionBox.Show(exception);
            }
        }
 /// <inheritdoc />
 public override bool IsApplicable(RXObject overruledSubject)
 {
     return(ExtendedDataUtils.IsApplicable(overruledSubject, WaterProofing.GetDescriptor().Name));
 }
Exemplo n.º 22
0
        static bool HasValidDataForParticipant(Participant p, CompoundDataPiece piece)
        {
            var modid = ExtendedDataUtils.GetModForParticipant(p)?.ModInfo.Id ?? "srml";

            return(piece.HasPiece(modid) && piece.GetCompoundPiece(modid).HasPiece(ExtendedDataUtils.GetParticipantName(p)));
        }
Exemplo n.º 23
0
        internal static CompoundDataPiece GetDataForCurrentMod(CompoundDataPiece piece)
        {
            var strin = SRMod.GetCurrentMod().ModInfo.Id;

            return(ExtendedDataUtils.GetPieceForMod(strin, piece));
        }
Exemplo n.º 24
0
        static bool ValidateParticipant(ExtendedData.Participant p, CompoundDataPiece piece)
        {
            var modid = ExtendedDataUtils.GetModForParticipant(p)?.ModInfo.Id ?? "srml";

            return(p.IsDataValid(ExtendedDataUtils.GetPieceForParticipantFromRoot(modid, p, piece)));
        }
 /// <inheritdoc />
 public override bool IsApplicable(RXObject overruledSubject)
 {
     return(ExtendedDataUtils.IsApplicable(overruledSubject, SectionDescriptor.Instance.Name));
 }
        /// <summary>
        /// Добавление пользовательских элементов в палитру в зависимости от выбранных объектов
        /// </summary>
        private void ShowPropertiesControlsBySelection()
        {
            BtCollapseAll.Visibility = Visibility.Hidden;

            // Удаляем контролы свойств
            if (StackPanelProperties.Children.Count > 0)
            {
                StackPanelProperties.Children.Clear();
            }

            var psr = AcadUtils.Editor.SelectImplied();

            if (psr.Value == null || psr.Value.Count == 0)
            {
                // Очищаем панель описания
                ShowDescription(string.Empty);

                // hide message
                StckMaxObjectsSelectedMessage.Visibility = Visibility.Collapsed;
            }
            else
            {
                var maxSelectedObjects = MainSettings.Instance.MaxSelectedObjects;
                if (maxSelectedObjects == 0 || maxSelectedObjects >= psr.Value.Count)
                {
                    StckMaxObjectsSelectedMessage.Visibility = Visibility.Collapsed;

                    var objectIds = new List <ObjectId>();
                    using (AcadUtils.Document.LockDocument())
                    {
                        using (var tr = new OpenCloseTransaction())
                        {
                            foreach (SelectedObject selectedObject in psr.Value)
                            {
                                if (selectedObject.ObjectId == ObjectId.Null)
                                {
                                    continue;
                                }

                                var obj = tr.GetObject(selectedObject.ObjectId, OpenMode.ForRead);
                                if (obj is BlockReference blockReference &&
                                    ExtendedDataUtils.IsApplicable(blockReference))
                                {
                                    objectIds.Add(selectedObject.ObjectId);
                                }
                            }

                            tr.Commit();
                        }
                    }

                    if (objectIds.Any())
                    {
                        BtCollapseAll.Visibility = Visibility.Visible;
                        var summaryPropertyCollection = new SummaryPropertyCollection(objectIds);
                        summaryPropertyCollection.OnLockedLayerEventHandler +=
                            (sender, args) => ShowPropertiesControlsBySelection();
                        SetData(summaryPropertyCollection);
                    }
                }
                else
                {
                    StckMaxObjectsSelectedMessage.Visibility = Visibility.Visible;
                }
            }
        }
Exemplo n.º 27
0
 /// <summary>
 /// Проверка валидности примитива. Проверка происходит по наличию XData с определенным AppName
 /// </summary>
 /// <param name="overruledSubject">Instance of <see cref="RXObject"/></param>
 public override bool IsApplicable(RXObject overruledSubject)
 {
     return(ExtendedDataUtils.IsApplicable(overruledSubject, SecantNodalLeader.GetDescriptor().Name));
 }
Exemplo n.º 28
0
        static void InitParticipant(ExtendedData.Participant p, CompoundDataPiece piece)
        {
            var modid = ExtendedDataUtils.GetModForParticipant(p)?.ModInfo.Id ?? "srml";

            p.InitData(ExtendedDataUtils.GetPieceForParticipantFromRoot(modid, p, piece));
        }
Exemplo n.º 29
0
 /// <inheritdoc />
 public override bool IsApplicable(RXObject overruledSubject)
 {
     return(ExtendedDataUtils.IsApplicable(overruledSubject, Axis.GetDescriptor().Name, true));
 }
Exemplo n.º 30
0
        internal static void OnRegisterActor(GameModel model, long actorId, GameObject gameObject, bool skipNotify)
        {
            if (Identifiable.GetId(gameObject) == Identifiable.Id.NONE)
            {
                return;
            }

            var actorIdentifier = DataIdentifier.GetActorIdentifier(actorId);

            if (preparedData.TryGetValue(actorIdentifier, out var pdata))
            {
                var data = pdata.Data;
                foreach (var saveInfoPair in SaveRegistry.modToSaveInfo)
                {
                    if (data.HasPiece(saveInfoPair.Key.ModInfo.Id))
                    {
                        saveInfoPair.Value.OnExtendedActorDataLoaded(model.actors[actorId], gameObject, ExtendedDataUtils.GetPieceForMod(saveInfoPair.Key.ModInfo.Id, data));
                    }
                }
                ApplyDataToGameObject(gameObject, data);
                preparedData.Remove(actorIdentifier);
            }
        }