Ejemplo n.º 1
0
 internal static void ClearPropertyBlock(SelectionGroup group)
 {
     foreach (var r in SelectionGroupUtility.GetComponents <Renderer>(group.name))
     {
         r.SetPropertyBlock(null);
     }
 }
Ejemplo n.º 2
0
 /// <summary>
 /// 处理选区组告警
 /// </summary>
 private void ProcessGroupAlarm(SelectionGroup group)
 {
     SubProcessGroupAlarm(GroupAlarmType.MaxTemperature, group);  // 高温
     SubProcessGroupAlarm(GroupAlarmType.MaxTempRise, group);     // 温升
     SubProcessGroupAlarm(GroupAlarmType.MaxTempDif, group);      // 温差
     SubProcessGroupAlarm(GroupAlarmType.RelativeTempDif, group); // 相对温差
 }
Ejemplo n.º 3
0
        public static void SetPropertyBlock(SelectionGroup group, IEnumerable <PropertyChange> changes)
        {
            var renderers = SelectionGroupUtility.GetComponents <Renderer>(group.name).ToArray();

            foreach (var r in renderers)
            {
                var mpb = new MaterialPropertyBlock();
                foreach (var p in changes)
                {
                    if (Match(p.memberNameQuery, r.name))
                    {
                        switch (p.propertyType)
                        {
                        case PropertyChange.VECTOR:
                            mpb.SetVector(p.propertyName, p.vectorValue);
                            break;

                        case PropertyChange.COLOR:
                            mpb.SetColor(p.propertyName, p.colorValue);
                            break;

                        case PropertyChange.FLOAT:
                            mpb.SetFloat(p.propertyName, p.floatValue);
                            break;
                        }
                    }
                }
                r.SetPropertyBlock(mpb);
            }
        }
Ejemplo n.º 4
0
        /// <summary>
        /// 添加组选区
        /// </summary>
        public ARESULT AddNewGroupSelection(string data, ref long id)
        {
            SelectionGroup groupSelection = new SelectionGroup();

            if (groupSelection == null)
            {
                return(ARESULT.E_OUTOFMEMORY);
            }

            if (ARESULT.AFAILED(groupSelection.Deserialize(data)))
            {
                return(ARESULT.E_INVALIDARG);
            }

            long groupSelectionId = -1;

            if (ARESULT.AFAILED(GroupSelectionDAO.AddNewGroupSelection(mCell.mCellId, data, ref groupSelectionId)))
            {
                return(ARESULT.E_FAIL);
            }

            groupSelection.mId = groupSelectionId;
            groupSelection.mTemperatureData.mGroupId = groupSelectionId;
            id = groupSelectionId;

            lock (mSelectionGroups) {
                mSelectionGroups.Add(groupSelection);
            }

            return(ARESULT.S_OK);
        }
Ejemplo n.º 5
0
        /// <summary>
        /// 清除选区组报警信息
        /// </summary>
        /// <param name="selectionGroup">选区组</param>
        private void ClearSelectionGroupAlarm(SelectionGroup selectionGroup)
        {
            if (selectionGroup.mAlarmInfo == null)
            {
                return;
            }

            // 温度处理线程暂停
            mProcessingWorker.Pause();

            // 正在告警时, 结束当前告警
            if (selectionGroup.mAlarmInfo.mMaxTempAlarm.mAlarmStatus == AlarmStatus.Alarming)
            {
                UpdateAlarmInfo(
                    (int)AlarmMode.GroupSelection,
                    (int)GroupAlarmType.MaxTemperature,
                    selectionGroup.mId,
                    selectionGroup.Serialize(),
                    selectionGroup.mAlarmInfo.mMaxTempAlarm);
            }

            if (selectionGroup.mAlarmInfo.mMaxTempRiseAlarmInfo.mAlarmStatus == AlarmStatus.Alarming)
            {
                UpdateAlarmInfo(
                    (int)AlarmMode.GroupSelection,
                    (int)GroupAlarmType.MaxTempRise,
                    selectionGroup.mId,
                    selectionGroup.Serialize(),
                    selectionGroup.mAlarmInfo.mMaxTempRiseAlarmInfo);
            }

            if (selectionGroup.mAlarmInfo.mMaxTempDifAlarmInfo.mAlarmStatus == AlarmStatus.Alarming)
            {
                UpdateAlarmInfo(
                    (int)AlarmMode.GroupSelection,
                    (int)GroupAlarmType.MaxTempDif,
                    selectionGroup.mId,
                    selectionGroup.Serialize(),
                    selectionGroup.mAlarmInfo.mMaxTempDifAlarmInfo);
            }

            if (selectionGroup.mAlarmInfo.mRelativeTempDifAlarmInfo.mAlarmStatus == AlarmStatus.Alarming)
            {
                UpdateAlarmInfo(
                    (int)AlarmMode.GroupSelection,
                    (int)GroupAlarmType.RelativeTempDif,
                    selectionGroup.mId,
                    selectionGroup.Serialize(),
                    selectionGroup.mAlarmInfo.mRelativeTempDifAlarmInfo);
            }

            selectionGroup.mAlarmInfo.mMaxTempAlarm.Reset();
            selectionGroup.mAlarmInfo.mMaxTempRiseAlarmInfo.Reset();
            selectionGroup.mAlarmInfo.mMaxTempDifAlarmInfo.Reset();
            selectionGroup.mAlarmInfo.mRelativeTempDifAlarmInfo.Reset();

            // 温度处理线程继续
            mProcessingWorker.Resume();
        }
Ejemplo n.º 6
0
 public void Reset()
 {
     _name.text        = "Задание";
     _description.text = "";
     _priceText.text   = "0";
     _priceContainer.SetActive(false);
     _remainTimeText.UpdateValue("0");
     _remainTimeContainer.SetActive(false);
     SelectionGroup.DeselectAll();
 }
Ejemplo n.º 7
0
    SelectionGroupData GetSelectionGroupData(SelectionGroup id)
    {
        foreach (var group in selectionGroups)
        {
            if (group.id == id)
            {
                return(group);
            }
        }

        return(null);
    }
Ejemplo n.º 8
0
 public CandidateAgentData GetFocusedCandidate(SelectionGroup group, int index)
 {
     switch (group) {
         case SelectionGroup.Founder: return foundingCandidate;
         case SelectionGroup.Representative: return representativeCandidate;
         case SelectionGroup.LongestLived: return longestLivedCandidate;
         case SelectionGroup.MostEaten: return mostEatenCandidate;
         case SelectionGroup.HallOfFame: return hallOfFameGenomesList[index];
         case SelectionGroup.Leaderboard: return leaderboardGenomesList[index];
         case SelectionGroup.Candidates: return candidateGenomesList[index];
         default: Debug.LogError("Invalid selection group: " + group); return null;
     }
 }
Ejemplo n.º 9
0
    private void UpdateButtons(List <CandidateAgentData> candidates, SelectionGroup groupId)
    {
        for (int i = 0; i < buttons.Count; i++)
        {
            var active = i < candidates.Count;

            buttons[i].gameObject.SetActive(active);
            buttons[i].UpdateButtonPrefab(groupId, i);

            if (active)
            {
                buttons[i].SetDisplay(candidates[i]);
            }
        }
    }
Ejemplo n.º 10
0
        public static bool GetDefaultVector(SelectionGroup group, PropertyChange p, out Vector4 vector)
        {
            var renderers = SelectionGroupUtility.GetComponents <Renderer>(group.name);

            foreach (var r in renderers)
            {
                if (Match(p.memberNameQuery, r.name))
                {
                    vector = r.sharedMaterials[p.materialIndex].GetVector(p.propertyName);
                    return(true);
                }
            }
            vector = Vector4.zero;
            return(false);
        }
Ejemplo n.º 11
0
        public static bool GetDefaultFloat(SelectionGroup group, PropertyChange p, out float value)
        {
            var renderers = SelectionGroupUtility.GetComponents <Renderer>(group.name);

            foreach (var r in renderers)
            {
                if (Match(p.memberNameQuery, r.name))
                {
                    value = r.sharedMaterials[p.materialIndex].GetFloat(p.propertyName);
                    return(true);
                }
            }
            value = 0;
            return(false);
        }
 public void Reset()
 {
     _name.text = "Ресурс";
     if (_level != null)
     {
         _level.text = "0";
     }
     if (_amount != null)
     {
         _amount.text = "0";
     }
     if (_secName != null)
     {
         _secName.text = "";
     }
     SelectionGroup.DeselectAll();
 }
Ejemplo n.º 13
0
        protected IFeature InsertComFeatureBase(string[] paramNames, int[] paramTypes, string[] paramValues,
                                                int[] dimTypes, double[] dimValues, object[] selection, object[] editBodies)
        {
            if (!typeof(SwMacroFeatureDefinition).IsAssignableFrom(DefinitionType))
            {
                throw new InvalidCastException($"{DefinitionType.FullName} must inherit {typeof(SwMacroFeatureDefinition).FullName}");
            }

            var options  = CustomFeatureOptions_e.Default;
            var provider = "";

            DefinitionType.TryGetAttribute <CustomFeatureOptionsAttribute>(a =>
            {
                options  = a.Flags;
                provider = a.Provider;
            });

            var baseName = MacroFeatureInfo.GetBaseName(DefinitionType);

            var progId = MacroFeatureInfo.GetProgId(DefinitionType);

            if (string.IsNullOrEmpty(progId))
            {
                throw new NullReferenceException("Prog id for macro feature cannot be extracted");
            }

            var icons = MacroFeatureIconInfo.GetIcons(DefinitionType,
                                                      CompatibilityUtils.SupportsHighResIcons(SwMacroFeatureDefinition.Application.Application, CompatibilityUtils.HighResIconsScope_e.MacroFeature));

            using (var selSet = new SelectionGroup(m_FeatMgr.Document.ISelectionManager))
            {
                if (selection != null && selection.Any())
                {
                    var selRes = selSet.AddRange(selection);

                    Debug.Assert(selRes);
                }

                var feat = m_FeatMgr.InsertMacroFeature3(baseName,
                                                         progId, null, paramNames, paramTypes,
                                                         paramValues, dimTypes, dimValues, editBodies, icons, (int)options) as IFeature;

                return(feat);
            }
        }
Ejemplo n.º 14
0
    /// <summary>
    /// Adds this stat block to the nearest selection group
    /// </summary>
    public void AddToSelectionGroup()
    {
        SelectionGroup parent_group = GetComponentInParent <SelectionGroup>();

        if (!parent_group)
        {
            return;
        }

        if (parent_group.SelectedObjects.Contains(gameObject))
        {
            parent_group.RemoveSelection(gameObject);
        }
        else
        {
            parent_group.AddSelection(gameObject);
        }
    }
Ejemplo n.º 15
0
 public void StoreSelectionGroup(int index)
 {
     if (SelectionGroups[index] == null)
     {
         SelectionGroups[index] = new SelectionGroup();
     }
     else
     {
         SelectionGroups[index].ships.Clear();
         SelectionGroups[index].fighterWings.Clear();
     }
     foreach (Ship ship in SelectedShips)
     {
         SelectionGroups[index].ships.Add(ship);
     }
     foreach (FighterWing fighter in SelectedFighterWings)
     {
         SelectionGroups[index].fighterWings.Add(fighter);
     }
 }
Ejemplo n.º 16
0
    public void ChangeSelectedGenome(SelectionGroup group, int index)
    {
        SpeciesGenomePool pool = simulationManager.GetSelectedGenomePool();

        //selectionManager.SetFocusedCandidateGenome(pool, group, index);
        selectedButtonData = GetSelectionGroupData(group);

        uiManager.historyPanelUI.buttonSelCreatureEventsLink.gameObject.transform.localPosition = new Vector3(360f, 180f, 0f);

        if (group == SelectionGroup.Candidates)
        {
            selectionManager.SetSelected(pool.candidateGenomesList[index]);
        }

        if (selectedButtonData != null && selectedButtonData.image != null)
        {
            selectedButtonData.image.color = Color.white;
            // new Vector3(selectedButtonData.image.rectTransform.localPosition.x + 24f, selectedButtonData.image.rectTransform.localPosition.y, 0f);
        }
        panelGenomeViewer.SetActive(true);

        //uiManager.historyPanelUI.buttonSelCreatureEventsLink.GetComponent<RectTransform>().localPosition = Vector3.one * 4.2f;
    }
Ejemplo n.º 17
0
        /// <summary>
        /// 单个告警处理
        /// </summary>
        private void SubProcessGroupAlarm(
            GroupAlarmType alarmType,
            SelectionGroup group)
        {
            AlarmConfigData alarmSet;
            AlarmInfo       info;
            float           temperature;

            switch (alarmType)
            {
            case GroupAlarmType.MaxTemperature:
                alarmSet    = group.mAlarmConfig.mMaxTempConfig;
                temperature = group.mTemperatureData.mMaxTemperature;
                info        = group.mAlarmInfo.mMaxTempAlarm;
                break;

            case GroupAlarmType.MaxTempRise:
                alarmSet    = group.mAlarmConfig.mMaxTempeRiseConfig;
                temperature = group.mTemperatureData.mTemperatureRise;
                info        = group.mAlarmInfo.mMaxTempRiseAlarmInfo;
                break;

            case GroupAlarmType.MaxTempDif:
                alarmSet    = group.mAlarmConfig.mMaxTempDifConfig;
                temperature = group.mTemperatureData.mTemperatureDif;
                info        = group.mAlarmInfo.mMaxTempDifAlarmInfo;
                break;

            case GroupAlarmType.RelativeTempDif:
                alarmSet    = group.mAlarmConfig.mRelativeTempDifConfig;
                temperature = group.mTemperatureData.mRelTemperatureDif;
                info        = group.mAlarmInfo.mRelativeTempDifAlarmInfo;
                break;

            default:
                return;
            }

            AlarmStatus lastStatus = info.mAlarmStatus;

            info.mLastAlarmLevel = info.mCurrentAlarmLevel;

            if ((alarmType == GroupAlarmType.MaxTemperature) || (alarmType == GroupAlarmType.RelativeTempDif))
            {
                CalcAlarmInfo(alarmSet, temperature, info);
            }
            else
            {
                SpecialCalAlarmInfo(alarmSet, temperature, info); // 特殊处理组选区温升/温差
            }
            if (alarmType == GroupAlarmType.MaxTemperature)
            {
                ProcessAlarmReadyEnd(alarmSet, temperature, info);
            }

            if (info.mAlarmStatus == AlarmStatus.AlarmStart)
            {
                info.mAlarmStatus = AlarmStatus.Alarming;

                // 添加告警
                string groupData       = group.Serialize();
                string temperatureInfo = JsonUtils.ObjectToJson(group.mTemperatureData);

                // 阈值设置序列化
                string condition = string.Format("{0},{1},{2}", alarmSet.mGeneralThreshold, alarmSet.mSeriousThreshold, alarmSet.mCriticalThreshold);

                // 记录告警开始时间
                info.mBeginTime = DateTime.Now;
                info.mIsTimeout = false;

                // 告警入库
                OnAddAlarmInfo?.Invoke(
                    (int)AlarmMode.GroupSelection,
                    (int)alarmType,
                    (int)alarmSet.mAlarmReason,
                    (int)info.mCurrentAlarmLevel,
                    condition,
                    temperature,
                    group.mId,
                    group.mGroupName,
                    groupData,
                    temperatureInfo,
                    mMaxTemperature,
                    mMinTemperature,
                    group.mSelections,
                    info);
            }
            else if (info.mAlarmStatus == AlarmStatus.AlarmEnd)
            {
                info.mAlarmStatus = AlarmStatus.Unknown;

                // 结束告警
                string selectionData = group.Serialize();
                OnUpdateAlarmInfo?.Invoke(
                    (int)AlarmMode.GroupSelection,
                    (int)alarmType,
                    group.mId,
                    selectionData,
                    info);

                // 取消超时
                info.mIsTimeout = true;
            }
            else if (info.mAlarmStatus == AlarmStatus.AlarmingChanged)
            {
                // 结束上一次告警
                string selectionData = group.Serialize();
                OnUpdateAlarmInfo?.Invoke(
                    (int)AlarmMode.GroupSelection,
                    (int)alarmType,
                    group.mId,
                    selectionData,
                    info);

                string temperatureInfo = JsonUtils.ObjectToJson(group.mTemperatureData);

                // 阈值设置序列化
                string condition = string.Format("{0},{1},{2}", alarmSet.mGeneralThreshold, alarmSet.mSeriousThreshold, alarmSet.mCriticalThreshold);

                // 记录告警开始时间
                info.mBeginTime   = DateTime.Now;
                info.mIsTimeout   = false;
                info.mAlarmStatus = AlarmStatus.Alarming;

                OnAddAlarmInfo?.Invoke(
                    (int)AlarmMode.GroupSelection,
                    (int)alarmType,
                    (int)alarmSet.mAlarmReason,
                    (int)info.mCurrentAlarmLevel,
                    condition,
                    temperature,
                    group.mId,
                    group.mGroupName,
                    selectionData,
                    temperatureInfo,
                    mMaxTemperature,
                    mMinTemperature,
                    group.mSelections,
                    info);
            }
            else if ((info.mAlarmStatus == AlarmStatus.Alarming ||
                      info.mAlarmStatus == AlarmStatus.AlarmingReadyChanged) &&
                     (info.mIsTimeout == false))
            {
                DateTime time = DateTime.Now;
                if ((time - info.mBeginTime).TotalMinutes >= mTimeout)
                {
                    string selectionData = group.Serialize();
                    OnAlarmTimeout?.Invoke(
                        (int)AlarmMode.GroupSelection,
                        (int)alarmType,
                        group.mId,
                        selectionData,
                        info);

                    info.mIsTimeout = true;
                }
            }
        }
Ejemplo n.º 18
0
        private ISelectionGroup<RadioButton> GetDefaultGroup()
        {
            if (LogicalParent == null)
            {
                return null;
            }

            ISelectionGroup<RadioButton> group = (ISelectionGroup<RadioButton>)LogicalParent.GetValue(SelectionGroupProperty);

            if (group == null)
            {
                group = new SelectionGroup<RadioButton>();
                LogicalParent.SetValue(SelectionGroupProperty, group);
            }

            return group;
        }
Ejemplo n.º 19
0
 public void UpdateButtonPrefab(SelectionGroup grp, int slotIndex)
 {
     index = slotIndex;
     group = grp;
 }
Ejemplo n.º 20
0
 private void UnitSetGroup(Unit u, SelectionGroup group)
 {
     group.selectionGroup.Add(u.gameObject.transform);
     u.CurrentStats().inGroup = true;
     u.CurrentStats().group   = group;
 }
Ejemplo n.º 21
0
 private void Awake()
 {
     selectionGroup = new SelectionGroup(formation);
 }
Ejemplo n.º 22
0
        /// <summary>
        /// 更新组选区
        /// </summary>
        public ARESULT UpdateGroupSelectionConfig(string data)
        {
            GroupSelectionUpdateParam gupdate = JsonUtils.ObjectFromJson <GroupSelectionUpdateParam>(data);

            if (gupdate == null)
            {
                return(ARESULT.E_FAIL);
            }

            GroupAlarmConfig alramconfig = JsonUtils.ObjectFromJson <GroupAlarmConfig>(gupdate.mData);

            if (alramconfig == null)
            {
                return(ARESULT.E_FAIL);
            }

            SelectionGroup selectionGroup = null;

            lock (mSelectionGroups) {
                foreach (SelectionGroup item in mSelectionGroups)
                {
                    if (item.mId == gupdate.mId)
                    {
                        selectionGroup = item;
                        break;
                    }
                }
            }

            if (selectionGroup == null)
            {
                return(ARESULT.E_FAIL);
            }

            #region 更新告警设置

            lock (selectionGroup) {
                // 暂停温度处理线程
                mProcessingWorker.Pause();

                if (!selectionGroup.mAlarmConfig.mMaxTempConfig.Equals(alramconfig.mMaxTempConfig))
                {
                    // 正在告警时, 结束当前告警
                    if (selectionGroup.mAlarmInfo.mMaxTempAlarm.mAlarmStatus == AlarmStatus.Alarming)
                    {
                        UpdateAlarmInfo(
                            (int)AlarmMode.GroupSelection,
                            (int)GroupAlarmType.MaxTemperature,
                            selectionGroup.mId,
                            selectionGroup.Serialize(),
                            selectionGroup.mAlarmInfo.mMaxTempAlarm);
                    }

                    selectionGroup.mAlarmConfig.mMaxTempConfig = alramconfig.mMaxTempConfig;
                    selectionGroup.mAlarmInfo.mMaxTempAlarm.Reset();
                }

                if (!selectionGroup.mAlarmConfig.mMaxTempeRiseConfig.Equals(alramconfig.mMaxTempeRiseConfig))
                {
                    if (selectionGroup.mAlarmInfo.mMaxTempRiseAlarmInfo.mAlarmStatus == AlarmStatus.Alarming)
                    {
                        UpdateAlarmInfo(
                            (int)AlarmMode.GroupSelection,
                            (int)GroupAlarmType.MaxTempRise,
                            selectionGroup.mId,
                            selectionGroup.Serialize(),
                            selectionGroup.mAlarmInfo.mMaxTempRiseAlarmInfo);
                    }

                    selectionGroup.mAlarmConfig.mMaxTempeRiseConfig = alramconfig.mMaxTempeRiseConfig;
                    selectionGroup.mAlarmInfo.mMaxTempRiseAlarmInfo.Reset();
                }

                if (!selectionGroup.mAlarmConfig.mMaxTempDifConfig.Equals(alramconfig.mMaxTempDifConfig))
                {
                    if (selectionGroup.mAlarmInfo.mMaxTempDifAlarmInfo.mAlarmStatus == AlarmStatus.Alarming)
                    {
                        UpdateAlarmInfo(
                            (int)AlarmMode.GroupSelection,
                            (int)GroupAlarmType.MaxTempDif,
                            selectionGroup.mId,
                            selectionGroup.Serialize(),
                            selectionGroup.mAlarmInfo.mMaxTempDifAlarmInfo);
                    }

                    selectionGroup.mAlarmConfig.mMaxTempDifConfig = alramconfig.mMaxTempDifConfig;
                    selectionGroup.mAlarmInfo.mMaxTempDifAlarmInfo.Reset();
                }

                if (!selectionGroup.mAlarmConfig.mRelativeTempDifConfig.Equals(alramconfig.mRelativeTempDifConfig))
                {
                    if (selectionGroup.mAlarmInfo.mRelativeTempDifAlarmInfo.mAlarmStatus == AlarmStatus.Alarming)
                    {
                        UpdateAlarmInfo(
                            (int)AlarmMode.GroupSelection,
                            (int)GroupAlarmType.RelativeTempDif,
                            selectionGroup.mId,
                            selectionGroup.Serialize(),
                            selectionGroup.mAlarmInfo.mRelativeTempDifAlarmInfo);
                    }

                    selectionGroup.mAlarmConfig.mRelativeTempDifConfig = alramconfig.mRelativeTempDifConfig;
                    selectionGroup.mAlarmInfo.mRelativeTempDifAlarmInfo.Reset();
                }

                // 取消暂停
                mProcessingWorker.Resume();
            }

            #endregion

            return(GroupSelectionDAO.UpdateGroupSelection(selectionGroup.mId, selectionGroup.Serialize()));
        }
Ejemplo n.º 23
0
 public SelectMessage(Entity sender, SelectionButton selectionButton, SelectionGroup selectionGroup) : base(sender)
 {
     Selection      = selectionButton;
     SelectionGroup = selectionGroup;
 }