コード例 #1
0
 internal void RemoveSite(SurveySite site)
 {
     if (sites.ContainsKey(site.SiteName))
     {
         sites[site.SiteName].RemoveSite(site);
     }
 }
コード例 #2
0
 void FindSites()
 {
     available_sites = ExSurveyTracker.instance.FindSites(vessel, 100.0);
     if (available_sites == null || available_sites.Count < 1)
     {
         Highlight(false);
         site      = null;
         site_list = null;
     }
     else
     {
         var slist = new List <string> ();
         for (int ind = 0; ind < available_sites.Count; ind++)
         {
             slist.Add(available_sites[ind].SiteName);
         }
         if (!available_sites.Contains(site))
         {
             Highlight(false);
             site = available_sites[0];
         }
         site_list = new DropDownList(slist);
     }
     Debug.Log(String.Format("[EL SS] {0}", site));
 }
コード例 #3
0
        void AddStake(Vessel vessel)
        {
            Debug.Log(String.Format("[EL ST] AddStake {0} {1}", vessel.vesselName, vessel.mainBody.bodyName));
            SurveySite site = new SurveySite(vessel);

            AddSite(site);
        }
コード例 #4
0
 internal SurveySite AddSite(SurveySite site)
 {
     for (int i = 0; i < sites.Count; i++)
     {
         if (sites[i].isClose(site))
         {
             sites[i].Merge(site);
             for (int j = i + 1; j < sites.Count;)
             {
                 if (sites[i].isClose(sites[j]))
                 {
                     var s = sites[j];
                     sites[i].Merge(sites[j]);
                     sites.RemoveAt(j);
                     ELSurveyTracker.onSiteRemoved.Fire(s);
                     continue;
                 }
                 j++;
             }
             ELSurveyTracker.onSiteModified.Fire(sites[i]);
             return(sites[i]);
         }
     }
     sites.Add(site);
     return(site);
 }
コード例 #5
0
		internal SurveySite AddSite (SurveySite site)
		{
			if (!sites.ContainsKey (site.SiteName)) {
				sites[site.SiteName] = new SiteList ();
			}
			return sites[site.SiteName].AddSite (site);
		}
コード例 #6
0
 void onSiteModified(SurveySite s)
 {
     Debug.LogFormat("[ELSurveyStation] onSiteModified");
     FindSites();
     SetSite(site);
     control.PlaceCraftHull();
 }
コード例 #7
0
 internal void RemoveSite(SurveySite site)
 {
     if (sites.ContainsKey (site.BodyName)) {
         sites[site.BodyName].RemoveSite (site);
     }
     onSiteRemoved.Fire (site);
 }
コード例 #8
0
 internal SurveySite AddSite(SurveySite site)
 {
     if (!sites.ContainsKey(site.SiteName))
     {
         sites[site.SiteName] = new SiteList();
     }
     return(sites[site.SiteName].AddSite(site));
 }
コード例 #9
0
 void onSiteRemoved(SurveySite s)
 {
     if (s == site)
     {
         site = null;
     }
     FindSites();
 }
コード例 #10
0
        internal static EL_VirtualPad Create(SurveySite site)
        {
            GameObject go  = new GameObject("EL Virtual Pad");
            var        pad = go.AddComponent <EL_VirtualPad> ();

            pad.SetSite(site);
            return(pad);
        }
コード例 #11
0
 internal void RemoveSite(SurveySite site)
 {
     if (sites.ContainsKey(site.BodyName))
     {
         sites[site.BodyName].RemoveSite(site);
     }
     onSiteRemoved.Fire(site);
 }
コード例 #12
0
		internal void RemoveSite (SurveySite site)
		{
			for (int i = 0; i < sites.Count; i++) {
				if (sites[i] == site) {
					sites.RemoveAt (i);
				}
			}
		}
コード例 #13
0
 void onSiteRemoved(SurveySite s)
 {
     Debug.LogFormat("[ELSurveyStation] onSiteRemoved");
     if (s == site)
     {
         site = null;
     }
     FindSites();
 }
コード例 #14
0
		public bool isClose (SurveySite site)
		{
			foreach (var stake in site.stakes) {
				if (isClose (stake)) {
					return true;
				}
			}
			return false;
		}
コード例 #15
0
 internal void RemoveSite(SurveySite site)
 {
     for (int i = 0; i < sites.Count; i++)
     {
         if (sites[i] == site)
         {
             sites.RemoveAt(i);
         }
     }
 }
コード例 #16
0
 internal void SetSite(SurveySite site)
 {
     points             = new Points(site);
     transform.position = points.center;
     transform.rotation = points.GetOrientation();
     if (gameObject.activeInHierarchy)
     {
         StartCoroutine(WaitAndSetBounds());
     }
 }
コード例 #17
0
 void Select_Site(SurveySite selected_site)
 {
     if (site != selected_site)
     {
         Highlight(false);
     }
     site = selected_site;
     site_list.SelectItem(available_sites.IndexOf(site));
     // The build window will take care of turning on highlighting
 }
コード例 #18
0
 public bool isClose(SurveySite site)
 {
     foreach (var stake in site.stakes)
     {
         if (isClose(stake))
         {
             return(true);
         }
     }
     return(false);
 }
コード例 #19
0
 internal SurveySite AddSite(SurveySite site)
 {
     if (!sites.ContainsKey (site.BodyName)) {
         sites[site.BodyName] = new SiteBody ();
     }
     var s = sites[site.BodyName].AddSite (site);
     // if a different site is returned, the given site was merged into
     // another site rather than added.
     if (s == site) {
         onSiteAdded.Fire (site);
     }
     return s;
 }
コード例 #20
0
        internal SurveySite AddSite(SurveySite site)
        {
            if (!sites.ContainsKey(site.BodyName))
            {
                sites[site.BodyName] = new SiteBody();
            }
            var s = sites[site.BodyName].AddSite(site);

            // if a different site is returned, the given site was merged into
            // another site rather than added.
            if (s == site)
            {
                onSiteAdded.Fire(site);
            }
            return(s);
        }
コード例 #21
0
        internal static EL_VirtualPad Create(SurveySite site)
        {
            GameObject go = GameObject.Find("EL Virtual Pad");

            if (go == null)
            {
                go = new GameObject("EL Virtual Pad");
            }
            else
            {
                Debug.Log("[EL_VirtualPad] oi, clean up!");
            }
            var pad = go.AddComponent <EL_VirtualPad> ();

            pad.SetSite(site);
            return(pad);
        }
コード例 #22
0
        public void RemoveStake(Vessel stake)
        {
            if (!stakes.Contains(stake))
            {
                return;
            }
            stakes.Remove(stake);
            while (stakes.Count > 0)
            {
                List <Vessel> old_stakes = stakes;
                stakes = new List <Vessel> ();
                stakes.Add(old_stakes[0]);
                old_stakes.RemoveAt(0);
                for (int i = 0; i < old_stakes.Count;)
                {
                    if (isClose(old_stakes[i]))
                    {
                        stakes.Add(old_stakes[i]);
                        old_stakes.RemoveAt(i);
                        continue;
                    }
                    i++;
                }
                if (old_stakes.Count > 0)
                {
                    Debug.Log(String.Format("[EL ST] split {0} {1}", stakes.Count, old_stakes.Count));
                    SurveySite site = new SurveySite(stakes);
                    stakes = old_stakes;

                    ExSurveyTracker.instance.AddSite(site);
                }
                else
                {
                    break;
                }
            }
            if (stakes.Count == 0)
            {
                ExSurveyTracker.instance.RemoveSite(this);
            }
            else
            {
                ExSurveyTracker.onSiteModified.Fire(this);
            }
        }
コード例 #23
0
 void SetSite(SurveySite selected_site)
 {
     if (site == selected_site)
     {
         if (site != null && virtualPad != null)
         {
             // update display
             virtualPad.SetSite(site);
             control.PlaceCraftHull();
         }
         return;
     }
     Highlight(false);
     site = selected_site;
     if (site == null)
     {
         if (virtualPad != null)
         {
             Destroy(virtualPad.gameObject);
             virtualPad = null;
         }
     }
     else
     {
         if (virtualPad == null)
         {
             //virtualPad = EL_VirtualPad.Create (site);
         }
         else
         {
             virtualPad.SetSite(site);
         }
     }
     if (site_list != null)
     {
         site_list.SelectItem(available_sites.IndexOf(site));
     }
     control.PlaceCraftHull();
     // The build window will take care of turning on highlighting
 }
コード例 #24
0
		internal SurveySite AddSite (SurveySite site)
		{
			for (int i = 0; i < sites.Count; i++) {
				if (sites[i].isClose (site)) {
					sites[i].Merge (site);
					for (int j = i + 1; j < sites.Count; ) {
						if (sites[i].isClose (sites[j])) {
							var s = sites[j];
							sites[i].Merge (sites[j]);
							sites.RemoveAt (j);
							ExSurveyTracker.onSiteRemoved.Fire (s);
							continue;
						}
						j++;
					}
					ExSurveyTracker.onSiteModified.Fire (sites[i]);
					return sites[i];
				}
			}
			sites.Add (site);
			return site;
		}
コード例 #25
0
            public Points(SurveySite site)
            {
                Dictionary<string, int> counts = new Dictionary<string, int> ();
                Dictionary<string, int> bcounts = new Dictionary<string, int> ();
                int count = 0;

                points = new Dictionary<string, Vector3d> ();
                bounds = new Dictionary<string, Vector3d> ();

                body = site.Body;

                center = Vector3d.zero;
                foreach (var stake in site) {
                    string key = ExSurveyStake.StakeUses[stake.use];
                    var pos = stake.vessel.GetWorldPos3D ();
                    center += pos;
                    count++;

                    Dictionary<string, Vector3d> pd;
                    Dictionary<string, int> cd;
                    if (stake.bound && key != "Origin") {
                        pd = bounds;
                        cd = bcounts;
                    } else {
                        pd = points;
                        cd = counts;
                    }

                    if (pd.ContainsKey (key)) {
                        pd[key] += pos;
                        cd[key] += 1;
                    } else {
                        pd[key] = pos;
                        cd[key] = 1;
                    }
                }
                center /= (double) count;
                foreach (var key in ExSurveyStake.StakeUses) {
                    if (points.ContainsKey (key)) {
                        points[key] /= (double) counts[key];
                    }
                }
                if (points.ContainsKey ("Origin")) {
                    center = points["Origin"];
                }
                foreach (var key in ExSurveyStake.StakeUses) {
                    if (bounds.ContainsKey (key)) {
                        bounds[key] /= (double) bcounts[key];
                        bounds[key] -= center;
                    }
                }
            }
コード例 #26
0
 void Select_Site(SurveySite selected_site)
 {
     if (site != selected_site) {
         Highlight (false);
     }
     site = selected_site;
     site_list.SelectItem (available_sites.IndexOf (site));
     // The build window will take care of turning on highlighting
 }
コード例 #27
0
 void onSiteModified(SurveySite s)
 {
     Debug.LogFormat("[ExSurveyStation] onSiteModified");
     FindSites();
     SetSite(site);
 }
コード例 #28
0
		internal void RemoveSite (SurveySite site)
		{
			if (sites.ContainsKey (site.SiteName)) {
				sites[site.SiteName].RemoveSite (site);
			}
		}
コード例 #29
0
 void onSiteAdded(SurveySite s)
 {
     FindSites();
 }
コード例 #30
0
 public void Merge(SurveySite site)
 {
     Debug.Log(String.Format("[EL ST] merge {0} {1}", stakes.Count, site.stakes.Count));
     stakes.AddRange(site.stakes);
     site.stakes.Clear();
 }
コード例 #31
0
        public Points(SurveySite site)
        {
            Dictionary <string, int> counts  = new Dictionary <string, int> ();
            Dictionary <string, int> bcounts = new Dictionary <string, int> ();
            int count = 0;

            points = new Dictionary <string, Vector3d> ();
            bounds = new Dictionary <string, Vector3d> ();

            body = site.Body;

            center = Vector3d.zero;
            foreach (var stake in site)
            {
                string key = ELSurveyStake.StakeUses[stake.use];
                var    pos = stake.vessel.GetWorldPos3D();
                center += pos;
                count++;

                Dictionary <string, Vector3d> pd;
                Dictionary <string, int>      cd;
                if (stake.bound && key != "Origin")
                {
                    pd = bounds;
                    cd = bcounts;
                }
                else
                {
                    pd = points;
                    cd = counts;
                }

                if (pd.ContainsKey(key))
                {
                    pd[key] += pos;
                    cd[key] += 1;
                }
                else
                {
                    pd[key] = pos;
                    cd[key] = 1;
                }
            }
            center /= (double)count;
            foreach (var key in ELSurveyStake.StakeUses)
            {
                if (points.ContainsKey(key))
                {
                    points[key] /= (double)counts[key];
                }
            }
            if (points.ContainsKey("Origin"))
            {
                center = points["Origin"];
            }
            foreach (var key in ELSurveyStake.StakeUses)
            {
                if (bounds.ContainsKey(key))
                {
                    bounds[key] /= (double)bcounts[key];
                    bounds[key] -= center;
                }
            }
        }
コード例 #32
0
 void onSiteModified(SurveySite s)
 {
     FindSites();
 }
コード例 #33
0
 void FindSites()
 {
     available_sites = ExSurveyTracker.instance.FindSites (vessel, 100.0);
     if (available_sites == null || available_sites.Count < 1) {
         Highlight (false);
         site = null;
         site_list = null;
     } else {
         var slist = new List<string> ();
         for (int ind = 0; ind < available_sites.Count; ind++) {
             slist.Add (available_sites[ind].SiteName);
         }
         if (!available_sites.Contains (site)) {
             Highlight (false);
             site = available_sites[0];
         }
         site_list = new DropDownList (slist);
     }
     Debug.Log (String.Format ("[EL SS] {0}", site));
 }
コード例 #34
0
 void onSiteAdded(SurveySite s)
 {
     FindSites ();
 }
コード例 #35
0
 void onSiteAdded(SurveySite s)
 {
     Debug.LogFormat("[ELSurveyStation] onSiteAdded");
     FindSites();
     SetSite(site);
 }
コード例 #36
0
 void onSiteModified(SurveySite s)
 {
     FindSites ();
 }
コード例 #37
0
		public void Merge (SurveySite site)
		{
			Debug.Log (String.Format ("[EL ST] merge {0} {1}", stakes.Count, site.stakes.Count));
			stakes.AddRange (site.stakes);
			site.stakes.Clear ();
		}
コード例 #38
0
 void onSiteRemoved(SurveySite s)
 {
     if (s == site) {
         site = null;
     }
     FindSites ();
 }
コード例 #39
0
		public void RemoveStake (Vessel stake)
		{
			if (!stakes.Contains (stake)) {
				return;
			}
			stakes.Remove (stake);
			while (stakes.Count > 0) {
				List<Vessel> old_stakes = stakes;
				stakes = new List<Vessel> ();
				stakes.Add (old_stakes[0]);
				old_stakes.RemoveAt (0);
				for (int i = 0; i < old_stakes.Count; ) {
					if (isClose (old_stakes[i])) {
						stakes.Add (old_stakes[i]);
						old_stakes.RemoveAt (i);
						continue;
					}
					i++;
				}
				if (old_stakes.Count > 0) {
					Debug.Log (String.Format ("[EL ST] split {0} {1}", stakes.Count, old_stakes.Count));
					SurveySite site = new SurveySite (stakes);
					stakes = old_stakes;

					ExSurveyTracker.instance.AddSite (site);
				} else {
					break;
				}
			}
			if (stakes.Count == 0) {
				ExSurveyTracker.instance.RemoveSite (this);
			} else {
				ExSurveyTracker.onSiteModified.Fire (this);
			}
		}
コード例 #40
0
 void AddStake(Vessel vessel)
 {
     Debug.Log (String.Format ("[EL ST] AddStake {0} {1}", vessel.vesselName, vessel.mainBody.bodyName));
     SurveySite site = new SurveySite (vessel);
     AddSite (site);
 }