Esempio n. 1
0
        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();
        }
Esempio n. 2
0
        public AddAsterism(Asterism A) : this() //для изменения
        {
            isAddition = false;
            Updated    = A;

            AsterName.Text = A.Name;
            Square.Value   = (decimal)A.Square;
        }
Esempio n. 3
0
    // 星座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);
    }
Esempio n. 4
0
    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);
            }
        }
    }