public void UpdateLinked() { if (!IsDummy && LinkedProvinces != null && LinkedProvinces.Any()) { foreach (ProvinceMarker pm in LinkedProvinces) { pm.UpdateColor(); } } }
public List <GameObject> CreateWrapMeshes() { if (IsDummy) { new List <GameObject>(); } if (m_wraps == null) { m_wraps = new List <ProvinceWrapMarker>(); } List <GameObject> objs = new List <GameObject>(); if (LinkedProvinces == null || !LinkedProvinces.Any()) // case for standard provinces { if (ConnectedProvinces.Any(x => x.IsDummy)) { List <ProvinceMarker> mars = ConnectedProvinces.Where(x => x.IsDummy); List <Vector3> offsets = new List <Vector3>(); foreach (ProvinceMarker pm in mars) { if (offsets.Any(x => Vector3.Distance(x, pm.DummyOffset) < 0.01f)) { continue; } offsets.Add(pm.DummyOffset); GameObject obj = GameObject.Instantiate(WrapMarkerPrefab); ProvinceWrapMarker wrap = obj.GetComponent <ProvinceWrapMarker>(); wrap.SetParent(this); wrap.SetNode(m_node); wrap.CreatePoly(m_poly, -pm.DummyOffset); obj.transform.position = obj.transform.position - pm.DummyOffset; m_wraps.Add(wrap); objs.Add(obj); objs.AddRange(create_connection_wraps(pm, -pm.DummyOffset)); } } } else // case for provinces with linked dummy nodes { List <ProvinceMarker> ignore = new List <ProvinceMarker>(); foreach (ProvinceMarker pm in LinkedProvinces) { GameObject obj = GameObject.Instantiate(WrapMarkerPrefab); ProvinceWrapMarker wrap = obj.GetComponent <ProvinceWrapMarker>(); wrap.SetParent(this); wrap.SetNode(m_node); wrap.CreatePoly(m_poly, pm.DummyOffset); obj.transform.position = obj.transform.position + pm.DummyOffset; m_wraps.Add(wrap); ignore.Add(pm); objs.Add(obj); if (pm.DummyOffset.x > 0f && pm.DummyOffset.y > 0f) { objs.AddRange(create_connection_wraps(pm, new Vector3(-pm.DummyOffset.x, 0f))); objs.AddRange(create_connection_wraps(pm, new Vector3(0f, -pm.DummyOffset.y))); } } if (ConnectedProvinces.Any(x => x.IsDummy && !ignore.Contains(x))) { List <ProvinceMarker> mars = ConnectedProvinces.Where(x => x.IsDummy && !ignore.Contains(x)); foreach (ProvinceMarker pm in mars) { if (pm.DummyOffset.x > 0f && pm.DummyOffset.y > 0f && mars.Count > 1) { continue; } GameObject obj = GameObject.Instantiate(WrapMarkerPrefab); ProvinceWrapMarker wrap = obj.GetComponent <ProvinceWrapMarker>(); wrap.SetParent(this); wrap.SetNode(m_node); wrap.CreatePoly(m_poly, -pm.DummyOffset); obj.transform.position = obj.transform.position - pm.DummyOffset; m_wraps.Add(wrap); objs.Add(obj); objs.AddRange(create_connection_wraps(pm, -pm.DummyOffset)); } } } return(objs); }