public void FindExistingExtensions() { List <string> subTypes = GetExtensionsSubTypes(); Dictionary <string, UduinoExtension> availableExtensions = new Dictionary <string, UduinoExtension>(Manager.AvailableExtensions); foreach (KeyValuePair <string, UduinoExtension> u in availableExtensions) { if (subTypes.Contains(u.Key)) { UduinoExtension a = u.Value; if (!a.isPresent) { a.isPresent = true; Manager.AvailableExtensions.Remove(u.Key); Manager.AvailableExtensions.Add(u.Key, a); } } } }
public override void OnInspectorGUI() { if (manager == null) { manager = (UduinoManager)target; } baudRateIndex = System.Array.IndexOf(baudRates, Manager.BaudRate.ToString()); Log.SetLogLevel(manager.debugLevel); SetColorAndStyles(); DrawLogo(); defaultPanel = DrawHeaderTitle("Uduino Settings", defaultPanel, headerColor); if (defaultPanel) { CheckCompatibility(); GUILayout.Label("Connection type", EditorStyles.boldLabel); EditorGUI.indentLevel++; Dictionary <string, UduinoExtension> availableExtensions = new Dictionary <string, UduinoExtension>(Manager.AvailableExtensions); foreach (KeyValuePair <string, UduinoExtension> u in availableExtensions) { if (u.Value.isPresent) { GUILayout.BeginHorizontal(); bool isActiveValue = EditorGUILayout.Toggle(u.Value.name, u.Value.isActive); if (isActiveValue != u.Value.isActive) { UduinoExtension changedExtension = u.Value; changedExtension.isActive = isActiveValue; Manager.AvailableExtensions.Remove(u.Key); Manager.AvailableExtensions.Add(u.Key, changedExtension); } GUILayout.EndHorizontal(); } } EditorGUI.indentLevel--; GUILayout.Label("General", EditorStyles.boldLabel); EditorGUI.indentLevel++; LogLevel tmpLogLevel = (LogLevel)EditorGUILayout.EnumPopup("Log Level", Manager.debugLevel); if (tmpLogLevel != Manager.debugLevel) { Manager.debugLevel = tmpLogLevel; EditorUtility.SetDirty(target); } EditorGUI.indentLevel--; GUILayout.Label("Arduino", EditorStyles.boldLabel); EditorGUI.indentLevel++; baudRateIndex = EditorGUILayout.Popup("Baud Rate", baudRateIndex, baudRates); if (prevBaudRateIndex != baudRateIndex) { int result = 9600; int.TryParse(baudRates[baudRateIndex], out result); manager.BaudRate = result; prevBaudRateIndex = baudRateIndex; } Manager.ReadOnThread = EditorGUILayout.Toggle("Read on threads", Manager.ReadOnThread); EditorGUI.indentLevel--; GUILayout.Label("Messages", EditorStyles.boldLabel); EditorGUI.indentLevel++; if (manager.LimitSendRate = EditorGUILayout.Toggle("Limit Send Rate", Manager.LimitSendRate)) { if (manager.LimitSendRate) { Manager.SendRateSpeed = EditorGUILayout.IntField("Send Rate speed", Manager.SendRateSpeed); EditorGUILayout.Separator(); } } EditorGUI.indentLevel--; EditorGUILayout.Separator(); CheckUpdate(); } arduinoPanel = DrawHeaderTitle("Adruino", arduinoPanel, headerColor); if (arduinoPanel) { ArduinoSettings(); } advancedPanel = DrawHeaderTitle("Advanced", advancedPanel, headerColor); if (advancedPanel) { AdvancedSettings(); } //TODO : We add that here beacause we the values serialized are not updated if (!Application.isPlaying) { EditorUtility.SetDirty(target); } }