Exemple #1
0
        protected void UpdateDeviceItem(TListData listData)
        {
            var numDeviceItems = listData.DeviceComponent == null ? -1 : listData.DeviceComponent.AvailableDeviceItems.Count();

            listData.DeviceItem = numDeviceItems switch {
                1 => listData.DeviceComponent !.AvailableDeviceItems.First().Id,
                0 => null,
                _ => listData.DeviceItem
            };
        }
Exemple #2
0
        private void RenderDeviceItemElement(TListData listData, Rect cellRect, Action <TListData> updateAction)
        {
            // sets the item if only one coil
            UpdateDeviceItem(listData);

            var numDeviceItems = listData.DeviceComponent == null ? -1 : listData.DeviceComponent.AvailableDeviceItems.Count();

            // no coils: show error
            if (numDeviceItems == 0)
            {
                var icon     = EditorGUIUtility.IconContent("Error@2x").image;
                var iconRect = cellRect;
                iconRect.width = 20;
                var guiColor = GUI.color;
                GUI.color = Color.clear;
                EditorGUI.DrawTextureTransparent(iconRect, icon, ScaleMode.ScaleToFit);
                GUI.color   = guiColor;
                cellRect.x += 20;

                var s = new GUIStyle(EditorStyles.label)
                {
                    normal = { textColor = new Color(1f, 0.431f, 0.25f) }
                };
                EditorGUI.LabelField(cellRect, "No coils!", s);
                return;
            }

            // only one coil with no description: show nothing
            if (numDeviceItems == 1 && string.IsNullOrEmpty(listData.DeviceComponent !.AvailableDeviceItems.First().Description))
            {
                return;
            }

            // disable if nothing to select
            EditorGUI.BeginDisabledGroup(numDeviceItems <= 1);

            var currentIndex = 0;
            var labels       = Array.Empty <string>();
            IDeviceComponent <TDeviceITem> device = null;

            if (listData.DeviceComponent != null)
            {
                device       = listData.DeviceComponent;
                labels       = device.AvailableDeviceItems.Select(s => s.Description).ToArray();
                currentIndex = device.AvailableDeviceItems.TakeWhile(s => s.Id != listData.DeviceItem).Count();
            }
            EditorGUI.BeginChangeCheck();
            var newIndex = EditorGUI.Popup(cellRect, currentIndex, labels);

            if (EditorGUI.EndChangeCheck() && device != null)
            {
                if (currentIndex != newIndex)
                {
                    listData.DeviceItem = device.AvailableDeviceItems.ElementAt(newIndex).Id;
                    updateAction(listData);
                }
            }
            EditorGUI.EndDisabledGroup();
        }