コード例 #1
0
ファイル: Weather.cs プロジェクト: SirSteev/3.5-DM-Tool
        private bool RollPrecipitationChance(bool reroll)
        {
            isRaining = false;

            if (reroll)
            {
                precipitationChanceRoll = DiceRoller.RollD100();
            }

            switch (precipitationFrequency)
            {
            case PrecipitationFrequency.Drought:
                if (precipitationChanceRoll <= 5)
                {
                    cloudCover = CloudCover.Overcast;
                    isRaining  = true;
                }
                break;

            case PrecipitationFrequency.Rare:
                if (precipitationChanceRoll <= 15)
                {
                    cloudCover = CloudCover.Overcast;
                    isRaining  = true;
                }
                break;

            case PrecipitationFrequency.Intermittent:
                if (precipitationChanceRoll <= 30)
                {
                    cloudCover = CloudCover.Overcast;
                    isRaining  = true;
                }
                break;

            case PrecipitationFrequency.Common:
                if (precipitationChanceRoll <= 60)
                {
                    cloudCover = CloudCover.Overcast;
                    isRaining  = true;
                }
                break;

            case PrecipitationFrequency.Constant:
                if (precipitationChanceRoll <= 95)
                {
                    cloudCover = CloudCover.Overcast;
                    isRaining  = true;
                }
                break;

            default:
                break;
            }

            currentTemp = tempBaseline + tempVariation;

            return(isRaining);
        }
コード例 #2
0
    private Vector3 GetRandomStartPosition(CloudCover cover)
    {
        var pos = new Vector3(
            Random.Range(cover.GetMinX(), cover.GetMaxX()),
            Random.Range(heightRange.x, heightRange.y), 0);

        return(pos);
    }
コード例 #3
0
ファイル: Weather.cs プロジェクト: tehknox/tap-desktop
 public Weather(DateTime date, eWindSpeed windspeed, WindDirection direction, CloudCover cover,Precipitation precip, HourlyWeather[] temperatures,double temperatureLow, double temperatureHigh)
 {
     this.Date = date;
     this.WindSpeed = windspeed;
     this.Direction = direction;
     this.Cover = cover;
     this.Precip = precip;
     this.Temperatures = temperatures;
     this.TemperatureLow = temperatureLow;
     this.TemperatureHigh = temperatureHigh;
 }
コード例 #4
0
 public Weather(DateTime date, eWindSpeed windspeed, WindDirection direction, CloudCover cover, Precipitation precip, HourlyWeather[] temperatures, double temperatureLow, double temperatureHigh)
 {
     this.Date            = date;
     this.WindSpeed       = windspeed;
     this.Direction       = direction;
     this.Cover           = cover;
     this.Precip          = precip;
     this.Temperatures    = temperatures;
     this.TemperatureLow  = temperatureLow;
     this.TemperatureHigh = temperatureHigh;
 }
コード例 #5
0
    // Use this for initialization
    public LowCloudTracker(CloudCover cover, GameObject[] cloudPrefab)
    {
        this.cloudPrefab = cloudPrefab;
        heightRange      = new Vector2(cover.GetMinY(), cover.GetMaxY());

        for (int i = 0; i < cloudPrefab.Length; ++i)
        {
            var startPos = GetRandomStartPosition(cover);
            Debug.Log(startPos);
            cloudPrefab[i].transform.position = GetRandomStartPosition(cover);
        }
    }
コード例 #6
0
ファイル: Sigma.cs プロジェクト: adrianmarton/PlumeDispersion
        private StabilityClassEnum[] getStabilityClassNight(CloudCover cloudCover)
        {
            StabilityClassEnum[] high = { StabilityClassEnum.E, StabilityClassEnum.E, StabilityClassEnum.D, StabilityClassEnum.D, StabilityClassEnum.D };
            StabilityClassEnum[] low  = { StabilityClassEnum.F, StabilityClassEnum.F, StabilityClassEnum.E, StabilityClassEnum.D, StabilityClassEnum.D };


            switch (cloudCover)
            {
            case CloudCover.LOW: return(low);

            case CloudCover.HIGH: return(high);
            }
            return(null);
        }
コード例 #7
0
ファイル: Weather.cs プロジェクト: SirSteev/3.5-DM-Tool
        public Weather()
        {
            climate   = Climate.Temperate;
            elevation = Elevation.SeaLevel;
            season    = Season.Spring;
            precipitationIntensity = PrecipitationIntensity.Heavy;
            precipitationFrequency = PrecipitationFrequency.Intermittent;
            precipitationForm      = PrecipitationForm.RainHeavy;
            cloudCover             = CloudCover.CloudsMedium;
            windStrength           = WindStrength.Light;
            windCheckSize          = CharacterSize.None;
            windBlownAwaySize      = CharacterSize.None;
            severeWeatherEvent     = SevereWeatherEvent.None;

            inDesert      = false;
            isDay         = true;
            nightTempDrop = 0;

            RecalculateAll(true);
        }
コード例 #8
0
 public void SetData(int tempLo, int tempHi, int presLo, int presHi,
                     int cloudLo, int cloudHi, int humidLo, int humidHi, int precipLo,
                     int precipHi, int energyLo, int energyHi, int windXLo, int windXHi,
                     int windYLo, int windYHi)
 {
     Temperature.ToList()[0]   = tempLo;
     Temperature.ToList()[1]   = tempHi;
     Pressure.ToList()[0]      = presLo;
     Pressure.ToList()[1]      = presHi;
     CloudCover.ToList()[0]    = cloudLo;
     CloudCover.ToList()[1]    = cloudHi;
     Humidity.ToList()[0]      = humidLo;
     Humidity.ToList()[1]      = humidHi;
     Precipitation.ToList()[0] = precipLo;
     Precipitation.ToList()[1] = precipHi;
     Energy.ToList()[0]        = energyLo;
     Energy.ToList()[1]        = energyHi;
     WindSpeedX.ToList()[0]    = windXLo;
     WindSpeedX.ToList()[1]    = windXHi;
     WindSpeedY.ToList()[0]    = windYLo;
     WindSpeedY.ToList()[1]    = windYHi;
 }
コード例 #9
0
ファイル: Weather.cs プロジェクト: SirSteev/3.5-DM-Tool
        private void SetCloudCover(bool reroll)
        {
            if (reroll)
            {
                cloudCoverRoll = DiceRoller.RollD100();
            }

            if (cloudCoverRoll <= 50)
            {
                cloudCover = CloudCover.None;
            }
            else if (cloudCoverRoll >= 51 && cloudCoverRoll <= 70)
            {
                cloudCover = CloudCover.CloudsLight;
            }
            else if (cloudCoverRoll >= 71 && cloudCoverRoll <= 85)
            {
                cloudCover = CloudCover.CloudsMedium;
            }
            else if (cloudCoverRoll >= 86 && cloudCoverRoll <= 100)
            {
                cloudCover = CloudCover.Overcast;
            }
        }
コード例 #10
0
    public void Update(CloudCover cover, CloudSpriteSelector spriteSelector)
    {
        //is cloud out of screen range?
        int offset = 0;

        foreach (GameObject cloud in cloudPrefab)
        {
            if (cloud.transform.position.x < cover.GetMinX())
            {
                cloud.gameObject.GetComponent <SpriteRenderer>().sprite = spriteSelector.GetRandom();
                var newPos = new Vector3(
                    cover.GetMaxX(), Random.Range(heightRange.x, heightRange.y), 0);
                cloud.transform.position = newPos;
            }
            if (cloud.transform.position.x > cover.GetMaxX())
            {
                cloud.gameObject.GetComponent <SpriteRenderer>().sprite = spriteSelector.GetRandom();
                var newPos = new Vector3(
                    cover.GetMinX(), Random.Range(heightRange.x, heightRange.y), 0);
                cloud.transform.position = newPos;
            }
            offset++;
        }
    }
コード例 #11
0
    private void OnGUI()
    {
#if UNITY_EDITOR
        if (Application.isPlaying)
        {
            GUILayout.BeginArea(new Rect(240, 10, 300, m_showFoldout ? 300 : 30));
            GUILayout.BeginVertical((GUIStyle)("Box"));

            m_showFoldout = EditorGUILayout.Foldout(m_showFoldout, "Weather (" + m_stormIntensity.ToString("0.0") + ")");


            if (m_showFoldout)
            {
                GUILayout.BeginVertical((GUIStyle)("Box"));

                GUILayout.BeginVertical((GUIStyle)("Box"));

                m_randomUpdate = GUILayout.Toggle(m_randomUpdate, "Random Intensity");

                GUI.enabled = m_randomUpdate;
                GUILayout.Label("Lerp Values : " + m_lerpStart.ToString("0.00") + ", " + m_lerpEnd.ToString("0.00") + " (" + m_lerpProgress.ToString("0.00") + ")");
                GUI.enabled = !m_randomUpdate;

                GUILayout.EndVertical();

                GUILayout.BeginHorizontal();

                GUILayout.Label("Storm Intensity", GUILayout.Width(120));

                float stormIntensity = GUILayout.HorizontalSlider(m_stormIntensity, 0.0f, 1.0f);

                if (stormIntensity != m_stormIntensity)
                {
                    SetStormIntensity(stormIntensity);
                }

                GUILayout.Label(m_stormIntensity.ToString("0.0"));

                GUILayout.EndHorizontal();

                GUILayout.EndVertical();

                GUILayout.BeginVertical((GUIStyle)("Box"));

                GUILayout.BeginHorizontal();

                GUILayout.Label("Cloud Cover", GUILayout.Width(120));
                CloudCover = GUILayout.HorizontalSlider(CloudCover, 0.0f, 1.0f);
                GUILayout.Label(CloudCover.ToString("0.0"));

                GUILayout.EndHorizontal();

                GUILayout.BeginHorizontal();

                GUILayout.Label("Overlay Alpha", GUILayout.Width(120));
                float newAlpha = GUILayout.HorizontalSlider(m_overlayAlpha, 0.0f, 1.0f);
                if (newAlpha != m_overlayAlpha && m_overlayRenderer != null)
                {
                    SetOverlayAlpha(newAlpha);
                }

                GUILayout.Label(m_overlayAlpha.ToString("0.0"));

                GUILayout.EndHorizontal();

                GUILayout.BeginHorizontal();

                GUILayout.Label("Particle Intensity", GUILayout.Width(120));
                float newParticleIntensity = GUILayout.HorizontalSlider(m_particleIntensity, 0.0f, 1.0f);
                if (newParticleIntensity != m_particleIntensity)
                {
                    SetParticleIntensity(newParticleIntensity);
                }

                GUILayout.Label(m_particleIntensity.ToString("0.0"));

                GUILayout.EndHorizontal();

                m_showParticlesFoldout = EditorGUILayout.Foldout(m_showParticlesFoldout, "Particle Settings");

                GUILayout.EndVertical();
                GUI.enabled = true;
            }

            GUILayout.EndVertical();

            GUILayout.EndArea();
        }
#endif
    }
コード例 #12
0
ファイル: Sigma.cs プロジェクト: adrianmarton/PlumeDispersion
        public StabilityClassEnum getStabilityClass(double windSpeed, Boolean isNight, IncomeSolarRadiation solarRadiation, CloudCover cloudCover)
        {
            int stabilityClassIndex = -1;

            if (windSpeed < 2)
            {
                stabilityClassIndex = 0;
            }
            else if ((windSpeed >= 2) && (windSpeed < 3))
            {
                stabilityClassIndex = 1;
            }
            else if ((windSpeed >= 3) && (windSpeed < 5))
            {
                stabilityClassIndex = 2;
            }
            else if ((windSpeed >= 5) && (windSpeed < 6))
            {
                stabilityClassIndex = 3;
            }
            else if (windSpeed >= 6)
            {
                stabilityClassIndex = 4;
            }


            StabilityClassEnum[] sClasses = null;
            if (isNight)
            {
                sClasses = getStabilityClassNight(cloudCover);
            }
            else
            {
                sClasses = getStabilityClassDay(solarRadiation);
            }

            return(sClasses[stabilityClassIndex]);
        }
コード例 #13
0
 // Use this for initialization
 void Start()
 {
     spriteSelector = new CloudSpriteSelector(cloudPrefab);
     cloudCover     = new CloudCover();
     lowTracker     = new LowCloudTracker(cloudCover, GetLowClouds(spriteSelector));
 }