public IEnumerator GenerateHeightMap( int width, int height, float xOffset, float yOffset, TerrainParameter para, IReturn <float[]> ret) { _width = width; _height = height; _xOffset = xOffset; _yOffset = yOffset; _para = para; _heightMap = new float[_width * _height]; var genLocalMonad = new BlockMonad <float[]>(r => _randPointGen.GenerateRandomLocalAreaMap( width, height, _para.RANDOM_POINT_GEN_PARA, r)); yield return(genLocalMonad.Do()); if (genLocalMonad.Error != null) { ret.Fail(genLocalMonad.Error); yield break; } _localAreaMap = genLocalMonad.Result; yield return(_GenerateHeightMap()); ret.Accept(_heightMap); }
public void Init() { _paramTerrain = (TerrainParameter)AssetDatabase.LoadAssetAtPath(_terrainParamPath, typeof(TerrainParameter)); _paramWeather = (WeatherParameter)AssetDatabase.LoadAssetAtPath(_weatherParamPath, typeof(WeatherParameter)); _paramTemperature = (TemperatureParameter)AssetDatabase.LoadAssetAtPath(_temperatureParamPath, typeof(TemperatureParameter)); _paramMana = (ManaParameter)AssetDatabase.LoadAssetAtPath(_manaParamPath, typeof(ManaParameter)); _paramRain = (RainParameter)AssetDatabase.LoadAssetAtPath(_rainParamPath, typeof(RainParameter)); _biomeDistribution = (BiomeDistribution)AssetDatabase.LoadAssetAtPath(_biomeDistributionPath, typeof(BiomeDistribution)); _terrainColor = (ColorRangeDistribution)AssetDatabase.LoadAssetAtPath(_terrainColorRangePath, typeof(ColorRangeDistribution)); _weatherColor = (ColorRangeDistribution)AssetDatabase.LoadAssetAtPath(_weatherColorRangePath, typeof(ColorRangeDistribution)); _manaColor = (ColorRangeDistribution)AssetDatabase.LoadAssetAtPath(_manaColorRangePath, typeof(ColorRangeDistribution)); _rainColor = (ColorRangeDistribution)AssetDatabase.LoadAssetAtPath(_rainColorRangePath, typeof(ColorRangeDistribution)); _serializedObj = new SerializedObject(this); _propertyParamTerrain = _serializedObj.FindProperty("_paramTerrain"); _propertyParamWeather = _serializedObj.FindProperty("_paramWeather"); _propertyParamTemperature = _serializedObj.FindProperty("_paramTemperature"); _propertyParamMana = _serializedObj.FindProperty("_paramMana"); _propertyParamRain = _serializedObj.FindProperty("_paramRain"); _propertyBiomeDistribution = _serializedObj.FindProperty("_biomeDistribution"); _propertyTerrainColorRange = _serializedObj.FindProperty("_terrainColor"); _propertyWeatherColorRange = _serializedObj.FindProperty("_weatherColor"); _propertyManaColorRange = _serializedObj.FindProperty("_manaColor"); _propertyRainColorRange = _serializedObj.FindProperty("_rainColor"); _propertyWidth = _serializedObj.FindProperty("_width"); _propertyHeight = _serializedObj.FindProperty("_height"); _propertySeed = _serializedObj.FindProperty("_seed"); _noticeTxt = string.Empty; _worldTexture = null; _tileData = null; _executor.Clear(); }
public void Create(TerrainParameter terrainParameter) { this.terrainParameter = terrainParameter; CreateContours(); Elevate(); Normalise(); Colorise(); }
public static bool hasParameter(Terrain terrain, TerrainParameter parameter) { if (terrain == null || !terrain.getParameters().ContainsKey(parameter)) { return false; } return terrain.getParameters()[parameter] != null; }
public static bool growable(Terrain terrain, int x, int y, LightMap lightMap, TerrainParameter thingToGrow) { //check for doors, trees, signs, graves if(TerrainManager.hasParameter(terrain, TerrainParameter.HAS_TREE) || TerrainManager.hasParameter(terrain, TerrainParameter.HAS_SIGN) || TerrainManager.hasParameter(terrain, TerrainParameter.HAS_GRAVE) || TerrainManager.hasParameter(terrain, TerrainParameter.HAS_DOOR)) { return false; } switch(thingToGrow) { //crops case TerrainParameter.HAS_SEED: if(terrain.getCode() == TerrainCode.FERTILE_LAND && !TerrainManager.hasParameter(terrain, TerrainParameter.HAS_SEED) && !TerrainManager.hasParameter(terrain, TerrainParameter.HAS_MOSS)) { return true; } return false; //mushrooms case TerrainParameter.HAS_MUSHROOM_SPORES: if(lightMap.getCalc(x, y) <= TerrainManager.SPORE_LIGHT_LEVEL_MAX && !TerrainManager.hasParameter(terrain, TerrainParameter.HAS_MUSHROOM_SPORES) && !TerrainManager.hasParameter(terrain, TerrainParameter.HAS_CLOVER) && !TerrainManager.hasParameter(terrain, TerrainParameter.HAS_SEED) && terrain.getCode() != TerrainCode.STONE_WALL && terrain.getCode() != TerrainCode.ROCK) { return true; } return false; //clover case TerrainParameter.HAS_CLOVER: if(!TerrainManager.hasParameter(terrain, TerrainParameter.HAS_MUSHROOM_SPORES) && !TerrainManager.hasParameter(terrain, TerrainParameter.HAS_CLOVER) && !TerrainManager.hasParameter(terrain, TerrainParameter.HAS_SEED) && !TerrainManager.hasParameter(terrain, TerrainParameter.HAS_MOSS) && terrain.getCode() != TerrainCode.STONE_WALL && terrain.getCode() != TerrainCode.ROCK && terrain.getCode() != TerrainCode.STREAM_BED && terrain.getCode() != TerrainCode.PATH) { return true; } return false; //moss case TerrainParameter.HAS_MOSS: if(terrain.getWater() <= 0 && !TerrainManager.hasParameter(terrain, TerrainParameter.HAS_MUSHROOM_SPORES) && !TerrainManager.hasParameter(terrain, TerrainParameter.HAS_CLOVER) && !TerrainManager.hasParameter(terrain, TerrainParameter.HAS_SEED) && !TerrainManager.hasParameter(terrain, TerrainParameter.HAS_MOSS) && (terrain.getCode() == TerrainCode.STONE_FLOOR || terrain.getCode() == TerrainCode.STONE_WALL || terrain.getCode() == TerrainCode.ROCK)) { return true; } return false; default: return true; } }
public static String getParameter(Terrain terrain, TerrainParameter parameter) { Object returned = terrain.getParameters()[parameter]; if(returned != null) { return (String)returned; } return null; }