private void DeleteSelected_Click(object sender, EventArgs e) { int RowId = GetSelectedRowId(); if (RowId == -1) { return; } Asterism ADel = Targets[RowId]; if (MessageBox.Show("Вы действительно хотите удалить созвездие " + ADel.Name + "?", "Удаление созвездия", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.No) { return; } if (Archive.Stars.Where(S => S.StarAsterism.ID == ADel.ID).Count() != 0) { MessageBox.Show("Невозможно удалить созвездие т.к. к нему привязана звезда"); return; } Archive.Delete <Asterism>(ADel); UpdateTable(); }
public AddAsterism(Asterism A) : this() //для изменения { isAddition = false; Updated = A; AsterName.Text = A.Name; Square.Value = (decimal)A.Square; }
// 星座Idからデータ取得 static public Asterism getData(int astId) { if (astId < 1 || astId > 89) { return(null); } var data = new Asterism(); int astIndex = astId - 1; var ast = Table_asterism_ast.getInstance().getData(astIndex); data.id_ = astId; data.shortName_ = ast.shortName_; data.name_ = ast.name_; data.jpName_ = ast.jpName_; var posTable = Table_asterism_star_pos.getInstance(); var lineHipTable = Table_asterism_line_hip.getInstance(); var starHipTable = Table_asterism_star_hip.getInstance(); // 恒星 var starHipIndices = lineHipTable.getStarHipIndicesFromShortName(data.shortName_); data.starNum_ = starHipIndices.Count; foreach (var i in starHipIndices) { // ヒッパルコスIdに対応する恒星データを取得 Star star = new Star(); var posData = posTable.getDataFromHipId(i); star.hipId_ = i; star.magnitude_ = posData.magnitude_; star.name_ = starHipTable.getName(star.hipId_); star.pos_ = new Vector2(posData.lat_, posData.long_); star.color_ = new Vector3(posData.r_, posData.g_, posData.b_); data.stars_.Add(star); } // 恒星間ライン var linePair = lineHipTable.getLinesFromShortName(data.shortName_); foreach (var pair in linePair) { var line = new Line(); var start = posTable.getDataFromHipId(pair.startHipId_); var end = posTable.getDataFromHipId(pair.endHipId_); line.start_ = new Vector2(start.lat_, start.long_); line.end_ = new Vector2(end.lat_, end.long_); line.startHipId_ = pair.startHipId_; line.endHipId_ = pair.endHipId_; data.lines_.Add(line); } return(data); }
private void CreateStars() { starFieldAnchor = GameObject.Find("StarFieldAnchor"); Stars.Clear(); char[] splitChars = new char[] { ' ' }; using (var memStream = new MemoryStream(starsTextAsset.bytes)) { using (var reader = new StreamReader(memStream)) { while (!reader.EndOfStream) { string line = reader.ReadLine(); string[] lineArr = line.Split(splitChars, StringSplitOptions.RemoveEmptyEntries); if (lineArr.Length < 6) { continue; } var star = new Star(); star.Index = Convert.ToInt32(lineArr[0]); star.Ra = Mathf.Deg2Rad * Convert.ToSingle(lineArr[1]); star.Dec = Mathf.Deg2Rad * Convert.ToSingle(lineArr[2]); star.Distance = 500; //Convert.ToSingle(lineArr[3]); star.Mag = Convert.ToSingle(lineArr[4]); star.type = lineArr[5]; //if (star.Mag < 3) //{ Stars.Add(star); //} } } } using (var memStream = new MemoryStream(asterismsTextAsset.bytes)) { using (var reader = new StreamReader(memStream)) { while (!reader.EndOfStream) { string line = reader.ReadLine(); string[] lineArr = line.Split(splitChars, StringSplitOptions.RemoveEmptyEntries); if (lineArr.Length < 4) { continue; } var asterism = new Asterism(); Asterisms.Add(asterism); asterism.Name = lineArr[0]; asterism.NumSegments = Convert.ToInt32(lineArr[1]); asterism.StarsA = new Star[asterism.NumSegments]; asterism.StarsB = new Star[asterism.NumSegments]; int index = 2; for (int i = 0; i < asterism.NumSegments; i++) { int a = Convert.ToInt32(lineArr[index++]); int b = Convert.ToInt32(lineArr[index++]); asterism.StarsA[i] = Stars.Find(s => s.Index == a); asterism.StarsB[i] = Stars.Find(s => s.Index == b); } Debug.Log("Processed asterism: " + asterism.Name); } } } points = new ParticleSystem.Particle[Stars.Count]; for (int i = 0; i < points.Length; i++) { var star = Stars[i]; points[i].position = new Vector3(star.Distance * Mathf.Cos(star.Dec) * Mathf.Cos(star.Ra), star.Distance * Mathf.Cos(star.Dec) * Mathf.Sin(star.Ra), star.Distance * Mathf.Sin(star.Dec)); //points[i].startSize = 30f; float size = 15f - star.Mag * 2; if (size < 5f) { size = 5f; } //points[i].startColor = new Color(1, 1, 1, 1); points[i].startSize3D = new Vector3(size, size, size); star.particle = points[i]; } starParticleSystem.SetParticles(points, points.Length); foreach (var asterism in Asterisms) { for (int i = 0; i < asterism.NumSegments; i++) { if (asterism.StarsA[i] == null || asterism.StarsB[i] == null) { continue; } var lineObj = new GameObject(); lineObj.transform.parent = starFieldAnchor.transform; var lineRenderer = lineObj.AddComponent <LineRenderer>(); lineRenderer.material = asterismsMaterial; lineRenderer.startWidth = 1f; lineRenderer.endWidth = 1f; lineRenderer.SetPosition(0, asterism.StarsA[i].particle.position); lineRenderer.SetPosition(1, asterism.StarsB[i].particle.position); lineRenderer.startColor = new Color(0f, 0.2f, 0.7f); lineRenderer.endColor = new Color(0f, 0.2f, 0.7f); Debug.Log("Adding line: " + asterism.StarsA[i].particle.position + " : " + asterism.StarsB[i].particle.position); } } }