internal double GetValue(MidiMessage message, int channel, int key) { IScriptable scriptInterface = null; switch (TargetType) { case BindingTargetType.Setting: scriptInterface = Settings.Active as IScriptable; break; case BindingTargetType.SpaceTimeController: scriptInterface = SpaceTimeController.ScriptInterface; break; case BindingTargetType.Goto: Earth3d.MainWindow.GotoCatalogObject(PropertyName); break; case BindingTargetType.Layer: scriptInterface = LayerManager.ScriptInterface; break; case BindingTargetType.Navigation: scriptInterface = Earth3d.MainWindow as IScriptable; break; // case BindingTargetType.Actions: // break; //case BindingTargetType.Key: // break; // case BindingTargetType.Mouse: // break; default: break; } double value = 0; if (scriptInterface != null && !string.IsNullOrEmpty(PropertyName)) { try { switch (BindingType) { case BindingType.Action: // no values in actions break; case BindingType.Toggle: case BindingType.SyncValue: string val = scriptInterface.GetProperty(PropertyName); if (!string.IsNullOrEmpty(val)) { value = double.Parse(val); value = (value - Min) / (Max - Min); value = (double)value * 127.0; return(value); } return(0); case BindingType.SetValue: // don't scale this value = double.Parse(scriptInterface.GetProperty(PropertyName)); return(value); default: break; } } catch { } } return(0); }