Ejemplo n.º 1
0
        private static StarSo GetStarType(float hash)
        {
            var mappedHash = TetraxUtils.Map(
                hash,
                0,
                TetraxUtils.MatrixSize,
                0,
                1);
            int   i;
            float raritySum;

            for (i = 0, raritySum = _starTypes[i].Rarity;
                 i < _starTypes.Length;
                 raritySum = i + 2 < _starTypes.Length ? raritySum + _starTypes[i + 1].Rarity : 1, i++)
            {
                if (mappedHash > raritySum)
                {
                    continue;
                }

                return(_starTypes[i]);
            }

            return(_starTypes[_starTypes.Length - 1]);
        }
Ejemplo n.º 2
0
        public void Awake()
        {
            if (_starTypes == null)
            {
                _starTypes = Resources.LoadAll("Stars", typeof(StarSo)).Cast <StarSo>().ToArray();
                Array.Sort(_starTypes, (o1, o2) => o1.Rarity.CompareTo(o2.Rarity));
            }

            var hash = TetraxUtils.HashFromPosition(star.GetComponent <Star>().transform.position);

            template   = GetStarType(hash);
            type       = template.StarType;
            color      = template.Color;
            temp       = template.Temp.SelectByHash(hash);
            mass       = template.Mass.SelectByHash(hash);
            radius     = template.Radius.SelectByHash(hash);
            luminosity = template.Luminosity.SelectByHash(hash);
        }
Ejemplo n.º 3
0
        private void SetupStar()
        {
            _star = Instantiate(star, starLocation, Quaternion.identity);
            _star.GetComponent <Star>().transform.SetParent(transform);

            var component      = _star.GetComponent <Star>();
            var starRadius     = component.radius;
            var starLuminosity = component.luminosity;
            var starColor      = component.color;

            // Set the star Radius
            var radius = TetraxUtils.Map(starRadius, 0.00001f, 10f, 1.5f, 6f);

            _star.transform.localScale = new Vector3(radius, radius, radius);

            // Calculate the star and dust cloud luminosity
            var luminosity = TetraxUtils.Map(starLuminosity, 0.08f, 1100000f, 500f, 5000f);

            // Tint the star's material
            var starMat = _star.gameObject.GetComponent <MeshRenderer>().material;

            starMat.EnableKeyword("_EMISSION");
            starMat.SetColor(EmissionColor, starColor * luminosity);
        }
Ejemplo n.º 4
0
 public float SelectByHash(float hash)
 {
     return(TetraxUtils.Map(TetraxUtils.HashFromPosition(new Vector3(hash, 0f, 0f)), 0, TetraxUtils.MatrixSize, min, max));
 }