Beispiel #1
0
 /// Add a control
 public void Add(int i)
 {
     controls.Insert(i, Control.Default(navigator, this));
     ncontrols  = controls.Count;
     colorFinal = colorMap[ncontrols % colorMap.Length];
     Update();
 }
Beispiel #2
0
        /// Constructor
        /// Give the navigator to which this control is for
        public Controls(Navigator navigator)
        {
            // Defaults window
            defaultWindow = new DefaultWindow(navigator);

            // Assign navigator field
            this.navigator = navigator;
            Debug.Log(this.navigator.ToString());

            // Controls window id
            id = GUIUtility.GetControlID(FocusType.Keyboard);

            // Initial time
            if (navigator.UT0 == 0)
            {
                UT0 = Planetarium.GetUniversalTime();
            }
            else
            {
                UT0 = navigator.UT0;
            }
            Debug.Log(UT0.ToString());

            // Off navigator control
            navigatorOff = Control.Default(navigator, this);

            // If the navigator doesn't have saved controls, return default
            if (String.IsNullOrEmpty(navigator.frames) ||
                String.IsNullOrEmpty(navigator.angle0s) ||
                String.IsNullOrEmpty(navigator.angle1s) ||
                String.IsNullOrEmpty(navigator.angle2s) ||
                String.IsNullOrEmpty(navigator.throttles) ||
                String.IsNullOrEmpty(navigator.sailons) ||
                String.IsNullOrEmpty(navigator.durations))
            {
                ncontrols = 1;
                controls  = new List <Control>();
                controls.Add(Control.Default(navigator, this));
            }
            else
            { // Otherwise, parse saved controls
                // Split into arrays
                var frameStrings    = navigator.frames.Split(delimiter);
                var angle0Strings   = navigator.angle0s.Split(delimiter);
                var angle1Strings   = navigator.angle1s.Split(delimiter);
                var angle2Strings   = navigator.angle2s.Split(delimiter);
                var throttleStrings = navigator.throttles.Split(delimiter);
                var durationStrings = navigator.durations.Split(delimiter);
                var sailonStrings   = navigator.sailons.Split(delimiter);

                // Find number of controls
                ncontrols =
                    Math.Min(frameStrings.Length,
                             Math.Min(angle0Strings.Length,
                                      Math.Min(angle1Strings.Length,
                                               Math.Min(angle2Strings.Length,
                                                        Math.Min(throttleStrings.Length,
                                                                 Math.Min(durationStrings.Length,
                                                                          sailonStrings.Length))))));

                // Initialize controls array
                controls = new List <Control>();

                // Populate controls
                for (var i = 0; i < ncontrols; i++)
                {
                    var angles = new float[] { Utils.ParseSingle(angle0Strings[i]),
                                               Utils.ParseSingle(angle1Strings[i]),
                                               Utils.ParseSingle(angle2Strings[i]) };
                    controls.Add(new Control(navigator,
                                             this,
                                             angles,
                                             Utils.ParseSingle(throttleStrings[i]),
                                             Utils.ParseBool(sailonStrings[i]),
                                             Utils.ParseDouble(durationStrings[i]),
                                             navigator.defaultIWarp,
                                             frameStrings[i]));
                }
            }

            // Preview
            preview = new Preview(navigator);
        }