Пример #1
0
        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);
        }