Beispiel #1
0
    private static BiomeSettings InterpolateBiome(BiomeSettings BestSetting, float best, BiomeSettings SecondSetting, float second)
    {
        var newSetting = new BiomeSettings();

        newSetting.TerrainAmplitude  = BestSetting.TerrainAmplitude * best + SecondSetting.TerrainAmplitude * second;
        newSetting.TopLayerThickness = (int)(BestSetting.TopLayerThickness * best + SecondSetting.TopLayerThickness * second);
        newSetting.TreeRate          = BestSetting.TreeRate * best + SecondSetting.TreeRate * second;

        // TODO: Make decoration rate a float.
        newSetting.DecorationRate = (int)(BestSetting.DecorationRate * best + SecondSetting.DecorationRate * second);

        if (best < second)
        {
            newSetting.DefaultBlocktype = BestSetting.DefaultBlocktype;
            newSetting.TopLayerType     = BestSetting.TopLayerType;
            newSetting.UnderLayerType   = BestSetting.UnderLayerType;

            newSetting.TreeModel       = BestSetting.TreeModel;
            newSetting.DecorationModel = BestSetting.DecorationModel;
        }
        else
        {
            newSetting.DefaultBlocktype = SecondSetting.DefaultBlocktype;
            newSetting.TopLayerType     = SecondSetting.TopLayerType;
            newSetting.UnderLayerType   = SecondSetting.UnderLayerType;

            newSetting.TreeModel       = SecondSetting.TreeModel;
            newSetting.DecorationModel = SecondSetting.DecorationModel;
        }

        return(newSetting);
    }
Beispiel #2
0
 public void SetBiome(BiomeSettings biome)
 {
     if (currentBiome != null)
     {
         lastGroundColor = currentBiome.groundColor;
     }
     currentBiome = biome;
 }
        public Zone(MacroMap mesh, MacroMap.CellMesh.Submesh cells, int id, BiomeSettings biome, TriRunner settings)
        {
            _mesh   = mesh;
            Submesh = cells;
            Id      = id;
            Biome   = biome;

            Influence = new Influence(id);
        }
Beispiel #4
0
    // TODO: Place trees into the chunk array.
    public void GenerateVegetation(Chunk chunk, BiomeSettings CurrentSettings)
    {
        bool placedTree = false;

        for (int x = 0; x < ChunkSize.x; x++)
        {
            for (int z = 0; z < ChunkSize.z; z++)
            {
                // Placing trees
                float treeChance = rng.RandfRange(1f, 100f);
                if (treeChance < CurrentSettings.TreeRate)
                {
                    var file = (ArrayMesh)ResourceLoader.Load(CurrentSettings.TreeModel);
                    foreach (var item in file.GetMetaList())
                    {
                        if (item == "voxel_size")
                        {
                            continue;
                        }

                        int ty = chunk.HighestAt(x, z) + 1;

                        var array  = item.Split(",");
                        var result = new Vector3(Mathf.Abs(int.Parse(array[0].Right(1))),
                                                 Mathf.Abs(int.Parse(array[1])),
                                                 Mathf.Abs(int.Parse(array[2].Left(array[2].Length - 1))));

                        var voxelPosition = result + new Vector3(x, ty, z);

                        if ((voxelPosition.x < 0 || voxelPosition.x >= 16) ||
                            (voxelPosition.y < 0 || voxelPosition.y >= 255) ||
                            (voxelPosition.z < 0 || voxelPosition.z >= 16))
                        {
                            continue;
                        }
                        chunk.Voxels[(int)voxelPosition.x, (int)voxelPosition.y, (int)voxelPosition.z].Active = true;
                    }
                    //// Placing point.

                    //// Creating and setting the mesh.
                    //var meshInstance = new MeshInstance();
                    //meshInstance.Mesh =

                    //// Adding it next frame.(safe with mutex lock)
                    //CallDeferred("add_child", meshInstance);
                    //// Moving it next frame(not in the tree yet :))
                    //meshInstance.SetDeferred("translation", new Vector3(x + (Offset.x * ChunkSize.x) -10, ty,
                    //                                                        z + (Offset.y * ChunkSize.z + 10)));
                    placedTree = true;
                }
            }
        }
    }
    public void OnEnable()
    {
        Settings = (BiomeSettings)target;

        foreach (var elevationData in Settings.Elevations)
        {
            if (elevationData.EditorName == "")
            {
                elevationData.EditorName = "Hello World!";
            }
        }
    }
        public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
        {
            Rect rect = position;

            rect.height         = EditorGUIUtility.singleLineHeight;
            property.isExpanded = EditorGUI.Foldout(rect, property.isExpanded, "Biomes", true, EditorStyles.foldoutHeader);

            if (property.isExpanded)
            {
                if (settings == null)
                {
                    settings = ((BiomeSettings)property.serializedObject.targetObject);
                }

                GUI.backgroundColor = Color.red;
                rect.y += EditorGUIUtility.singleLineHeight;
                float startX = rect.x;
                //rect.x = 0;
                rect.width = columnWidth;
                EditorGUI.LabelField(rect, "Zones");

                foreach (var moistureZone in Enum.GetNames(typeof(MoistureZone)))
                {
                    rect.x += columnWidth;
                    EditorGUI.LabelField(rect, moistureZone, moistureStyle);
                }

                rect.x = startX;

                var values = Enum.GetValues(typeof(ElevationZone));

                for (int i = 0; i < values.Length; ++i)
                {
                    rect.y += EditorGUIUtility.singleLineHeight;
                    EditorGUI.LabelField(rect, values.GetValue(i).ToString(), elevationStyle);

                    var elevation = BiomeDictionary.biomeLookup[i];
                    for (int j = 0; j < elevation.Length; ++j)
                    {
                        rect.x += columnWidth;
                        EditorGUI.ColorField(rect, settings.biomeColors[elevation[j]]);
                        rect.y += EditorGUIUtility.singleLineHeight;
                        EditorGUI.LabelField(rect, ((BiomeType)elevation[j]).ToString(), biomeLabelStyle);
                        rect.y -= EditorGUIUtility.singleLineHeight;
                    }

                    rect.x  = startX;
                    rect.y += EditorGUIUtility.singleLineHeight;
                }
            }
        }
 public void SetBiome(BiomeSettings biome, bool skipTransition = false)
 {
     currentBiome = biome;
     if (!skipTransition)
     {
         StartTransition();
     }
     else
     {
         StartTransition();
         FinishTransition();
         CleanUpTransition();
     }
 }
Beispiel #8
0
        public override void OnInspectorGUI()
        {
            BiomeSettings biomes = (BiomeSettings)target;

            EditorStyles.label.wordWrap = true;

            EditorGUILayout.PropertyField(serializedObject.FindProperty("riverSubdivisions"));
            EditorGUILayout.PropertyField(serializedObject.FindProperty("riverAmplitude"));

            if (biomes.biomeColors.Count != Enum.GetNames(typeof(BiomeType)).Length)
            {
                for (int i = biomes.biomeColors.Count; i < Enum.GetNames(typeof(BiomeType)).Length; ++i)
                {
                    biomes.biomeColors.Add(Color.black);
                }
            }

            for (int i = 0; i < Enum.GetNames(typeof(BiomeType)).Length; ++i)
            {
                BiomeType biomeType = (BiomeType)i;
                EditorGUILayout.BeginHorizontal();
                {
                    EditorGUILayout.LabelField(biomeType.ToString());
                    biomes.biomeColors[i] = EditorGUILayout.ColorField(biomes.biomeColors[i], GUILayout.Width(120));
                }
                EditorGUILayout.EndHorizontal();
            }

            biomes.isElevationFoldout = EditorGUILayout.Foldout(biomes.isElevationFoldout, "Elevation Start Heights", true);
            if (biomes.isElevationFoldout)
            {
                for (int i = 0; i < biomes.elevationStartHeights.Length; ++i)
                {
                    EditorGUI.indentLevel = 1;
                    EditorGUILayout.BeginHorizontal();
                    {
                        EditorGUILayout.LabelField(((ElevationZone)i).ToString(), GUILayout.Width(60));
                        biomes.elevationStartHeights[i] = EditorGUILayout.DelayedFloatField(biomes.elevationStartHeights[i]);
                    }
                    EditorGUILayout.EndHorizontal();
                    EditorGUI.indentLevel = 0;
                }
            }

            EditorGUILayout.PropertyField(serializedObject.FindProperty("biomeDictionary"));

            serializedObject.ApplyModifiedProperties();
        }
Beispiel #9
0
    private void SetBiome(BiomeSettings biome, bool skipTransition = false)
    {
        background.SetBiome(biome, skipTransition);
        level.SetBiome(biome);
        foreground.SetBiome(biome);
        weather.SetBiome(biome);

        if (biome.mergeChunk != null)
        {
            level.introChunks.Enqueue(biome.mergeChunk);
        }

#pragma warning disable CS0618
        player.dustParticles.startColor = biome.dustColor;
#pragma warning restore CS0618
    }
        public Color GetVegetation(BiomeSettings biome, float random)
        {
            float acumProb = 0;
            int   index    = 0;

            for (int t = 0; t < biome.Vegetation.Length; t++)
            {
                acumProb += biome.Vegetation[t].Probability;
                if (random < acumProb)
                {
                    index = t;
                    break;
                }
            }
            return(biome.Vegetation[index].Color);
        }
Beispiel #11
0
    private static float GetMatch(float temp, float humidity, BiomeSettings biome)
    {
        float realTemp, realHum, realTargetTemp, realTargetHum;

        float targetTemp = biome.TargetTemperature;
        float targetHum  = biome.TargetHumidity;

        realTemp = (TemperatureManager.GetOriginalTemperature(temp) - 1f) / 2;
        realHum  = humidity / 100f;

        realTargetTemp = (TemperatureManager.GetOriginalTemperature(targetTemp) - 1f) / 2;
        realTargetHum  = targetHum / 100f;

        float diffTemp = realTemp > realTargetTemp ? realTargetTemp - realTemp : realTemp - realTargetTemp;
        float diffHum  = realHum > realTargetHum ? realTargetHum - realHum : realHum - realTargetHum;

        return(1f + (diffTemp + diffHum));
    }
    public void SetBiome(BiomeSettings biome)
    {
        currentBiome = biome;

        TurnOffAll();
        if (currentBiome.weather == BiomeSettings.Weather.None)
        {
            // nothing to do
        }

        else if (currentBiome.weather == BiomeSettings.Weather.Raining)
        {
            TurnOnRain();
        }

        else if (currentBiome.weather == BiomeSettings.Weather.Snowing)
        {
            TurnOnSnow();
        }
    }
    public void SwapLayers(BiomeSettings biome)
    {
        // layers
        for (int i = 0; i < layers.Length; i++)
        {
            // remember where old layer was
            float copyX = layers[i].transform.position.x;

            // Destroy and reinstantiate new layer
            Destroy(layers[i].gameObject);
            layers[i] = Instantiate(biome.layers[i], transform);

            // calculate by how much we'll need to move the children to recover their rightful place
            float moveBy = layers[i].transform.position.x - copyX;

            // move the parent where the old layer was
            layers[i].transform.position = new Vector3(
                copyX,
                layers[i].transform.position.y,
                layers[i].transform.position.z);

            // move the children to recover appropiate place
            for (int j = 0; j < layers[i].childCount; j++)
            {
                layers[i].GetChild(j).transform.position += new Vector3(moveBy, 0, 0);
            }
        }

        // sky image
        backgroundImage.transform.position = new Vector3(
            backgroundImage.transform.position.x,
            backgroundImage.transform.position.y,
            biome.backgroundZ);

        // brights
        Destroy(brights.gameObject);
        brights = Instantiate(biome.brights, transform);
    }
Beispiel #14
0
    public static BiomeSettings GetBiomeSettings(Biomes biome)
    {
        var newBiomeSettings = new BiomeSettings();

        switch (biome)
        {
        case Biomes.Tundra:
            newBiomeSettings.TargetHumidity    = Tundra.TargetHumidity;
            newBiomeSettings.TargetTemperature = Tundra.TargetTemperature;
            newBiomeSettings.DefaultBlocktype  = Tundra.DefaultBlocktype;
            newBiomeSettings.TopLayerType      = Tundra.TopLayerType;
            newBiomeSettings.UnderLayerType    = Tundra.UnderLayerType;
            newBiomeSettings.Mountains         = Tundra.Mountains;
            newBiomeSettings.TerrainAmplitude  = Tundra.TerrainAmplitude;
            newBiomeSettings.TopLayerThickness = Tundra.TopLayerThickness;
            newBiomeSettings.TreeModel         = Tundra.TreeModel;
            newBiomeSettings.TreeRate          = Tundra.TreeRate;
            newBiomeSettings.DecorationModel   = Tundra.DecorationModel;
            newBiomeSettings.DecorationRate    = Tundra.DecorationRate;
            break;

        case Biomes.BorealForest:
            newBiomeSettings.TargetHumidity    = BorealForest.TargetHumidity;
            newBiomeSettings.TargetTemperature = BorealForest.TargetTemperature;
            newBiomeSettings.DefaultBlocktype  = BorealForest.DefaultBlocktype;
            newBiomeSettings.TopLayerType      = BorealForest.TopLayerType;
            newBiomeSettings.UnderLayerType    = BorealForest.UnderLayerType;
            newBiomeSettings.Mountains         = BorealForest.Mountains;
            newBiomeSettings.TerrainAmplitude  = BorealForest.TerrainAmplitude;
            newBiomeSettings.TopLayerThickness = BorealForest.TopLayerThickness;
            newBiomeSettings.TreeModel         = BorealForest.TreeModel;
            newBiomeSettings.TreeRate          = BorealForest.TreeRate;
            newBiomeSettings.DecorationModel   = BorealForest.DecorationModel;
            newBiomeSettings.DecorationRate    = BorealForest.DecorationRate;
            break;

        case Biomes.Woodlands:
            newBiomeSettings.TargetHumidity    = Woodlands.TargetHumidity;
            newBiomeSettings.TargetTemperature = Woodlands.TargetTemperature;
            newBiomeSettings.DefaultBlocktype  = Woodlands.DefaultBlocktype;
            newBiomeSettings.TopLayerType      = Woodlands.TopLayerType;
            newBiomeSettings.UnderLayerType    = Woodlands.UnderLayerType;
            newBiomeSettings.Mountains         = Woodlands.Mountains;
            newBiomeSettings.TerrainAmplitude  = Woodlands.TerrainAmplitude;
            newBiomeSettings.TopLayerThickness = Woodlands.TopLayerThickness;
            newBiomeSettings.TreeModel         = Woodlands.TreeModel;
            newBiomeSettings.TreeRate          = Woodlands.TreeRate;
            newBiomeSettings.DecorationModel   = Woodlands.DecorationModel;
            newBiomeSettings.DecorationRate    = Woodlands.DecorationRate;
            break;

        case Biomes.ColdDesert:
            newBiomeSettings.TargetHumidity    = ColdDesert.TargetHumidity;
            newBiomeSettings.TargetTemperature = ColdDesert.TargetTemperature;
            newBiomeSettings.DefaultBlocktype  = ColdDesert.DefaultBlocktype;
            newBiomeSettings.TopLayerType      = ColdDesert.TopLayerType;
            newBiomeSettings.UnderLayerType    = ColdDesert.UnderLayerType;
            newBiomeSettings.Mountains         = ColdDesert.Mountains;
            newBiomeSettings.TerrainAmplitude  = ColdDesert.TerrainAmplitude;
            newBiomeSettings.TopLayerThickness = ColdDesert.TopLayerThickness;
            newBiomeSettings.TreeModel         = ColdDesert.TreeModel;
            newBiomeSettings.TreeRate          = ColdDesert.TreeRate;
            newBiomeSettings.DecorationModel   = ColdDesert.DecorationModel;
            newBiomeSettings.DecorationRate    = ColdDesert.DecorationRate;
            break;

        case Biomes.Desert:
            newBiomeSettings.TargetHumidity    = Desert.TargetHumidity;
            newBiomeSettings.TargetTemperature = Desert.TargetTemperature;
            newBiomeSettings.DefaultBlocktype  = Desert.DefaultBlocktype;
            newBiomeSettings.TopLayerType      = Desert.TopLayerType;
            newBiomeSettings.UnderLayerType    = Desert.UnderLayerType;
            newBiomeSettings.Mountains         = Desert.Mountains;
            newBiomeSettings.TerrainAmplitude  = Desert.TerrainAmplitude;
            newBiomeSettings.TopLayerThickness = Desert.TopLayerThickness;
            newBiomeSettings.TreeModel         = Desert.TreeModel;
            newBiomeSettings.TreeRate          = Desert.TreeRate;
            newBiomeSettings.DecorationModel   = Desert.DecorationModel;
            newBiomeSettings.DecorationRate    = Desert.DecorationRate;
            break;

        case Biomes.Savanna:
            newBiomeSettings.TargetHumidity    = Savanna.TargetHumidity;
            newBiomeSettings.TargetTemperature = Savanna.TargetTemperature;
            newBiomeSettings.DefaultBlocktype  = Savanna.DefaultBlocktype;
            newBiomeSettings.TopLayerType      = Savanna.TopLayerType;
            newBiomeSettings.UnderLayerType    = Savanna.UnderLayerType;
            newBiomeSettings.Mountains         = Savanna.Mountains;
            newBiomeSettings.TerrainAmplitude  = Savanna.TerrainAmplitude;
            newBiomeSettings.TopLayerThickness = Savanna.TopLayerThickness;
            newBiomeSettings.TreeModel         = Savanna.TreeModel;
            newBiomeSettings.TreeRate          = Savanna.TreeRate;
            newBiomeSettings.DecorationModel   = Savanna.DecorationModel;
            newBiomeSettings.DecorationRate    = Savanna.DecorationRate;
            break;

        case Biomes.RainForest:
            newBiomeSettings.TargetHumidity    = RainForest.TargetHumidity;
            newBiomeSettings.TargetTemperature = RainForest.TargetTemperature;
            newBiomeSettings.DefaultBlocktype  = RainForest.DefaultBlocktype;
            newBiomeSettings.TopLayerType      = RainForest.TopLayerType;
            newBiomeSettings.UnderLayerType    = RainForest.UnderLayerType;
            newBiomeSettings.Mountains         = RainForest.Mountains;
            newBiomeSettings.TerrainAmplitude  = RainForest.TerrainAmplitude;
            newBiomeSettings.TopLayerThickness = RainForest.TopLayerThickness;
            newBiomeSettings.TreeModel         = RainForest.TreeModel;
            newBiomeSettings.TreeRate          = RainForest.TreeRate;
            newBiomeSettings.DecorationModel   = RainForest.DecorationModel;
            newBiomeSettings.DecorationRate    = RainForest.DecorationRate;
            break;

        case Biomes.TropicRainForest:
            newBiomeSettings.TargetHumidity    = TropicRainForest.TargetHumidity;
            newBiomeSettings.TargetTemperature = TropicRainForest.TargetTemperature;
            newBiomeSettings.DefaultBlocktype  = TropicRainForest.DefaultBlocktype;
            newBiomeSettings.TopLayerType      = TropicRainForest.TopLayerType;
            newBiomeSettings.UnderLayerType    = TropicRainForest.UnderLayerType;
            newBiomeSettings.Mountains         = TropicRainForest.Mountains;
            newBiomeSettings.TerrainAmplitude  = TropicRainForest.TerrainAmplitude;
            newBiomeSettings.TopLayerThickness = TropicRainForest.TopLayerThickness;
            newBiomeSettings.TreeModel         = TropicRainForest.TreeModel;
            newBiomeSettings.TreeRate          = TropicRainForest.TreeRate;
            newBiomeSettings.DecorationModel   = TropicRainForest.DecorationModel;
            newBiomeSettings.DecorationRate    = TropicRainForest.DecorationRate;
            break;

        case Biomes.Forest:
            newBiomeSettings.TargetHumidity    = Forest.TargetHumidity;
            newBiomeSettings.TargetTemperature = Forest.TargetTemperature;
            newBiomeSettings.DefaultBlocktype  = Forest.DefaultBlocktype;
            newBiomeSettings.TopLayerType      = Forest.TopLayerType;
            newBiomeSettings.UnderLayerType    = Forest.UnderLayerType;
            newBiomeSettings.Mountains         = Forest.Mountains;
            newBiomeSettings.TerrainAmplitude  = Forest.TerrainAmplitude;
            newBiomeSettings.TopLayerThickness = Forest.TopLayerThickness;
            newBiomeSettings.TreeModel         = Forest.TreeModel;
            newBiomeSettings.TreeRate          = Forest.TreeRate;
            newBiomeSettings.DecorationModel   = Forest.DecorationModel;
            newBiomeSettings.DecorationRate    = Forest.DecorationRate;
            break;
        }

        return(newBiomeSettings);
    }
Beispiel #15
0
        public DesertGenerator(MacroMap macroMap, IEnumerable <Cell> zoneCells, int id, BiomeSettings biome, TriRunner settings) : base(macroMap, zoneCells, id, biome, settings)
        {
            Assert.IsTrue(biome.Type == BiomeType.Desert);

            _dunesNoise = new FastNoise(_random.Seed);
            _dunesNoise.SetFrequency(1);

            _hillsOrientation = _random.Range(0, 180f);
            _stoneBlock       = settings.AllBlocks.First(b => b.Block == BlockType.Stone);
            _globalZoneHeight = _random.Range(0, 10);
        }
Beispiel #16
0
    public void GetChunkData(Chunk chunk)
    {
        // Chunk global position.
        var Offset = chunk.Offset;

        // Settings !
        float         temperature     = TemperatureManager.GetTemperature(0 + (int)(Offset.x * ChunkSize.x), 0 + (int)(Offset.y * ChunkSize.z));
        float         humidity        = TemperatureManager.GetHumidity(0 + (int)(Offset.x * ChunkSize.x), 0 + (int)(Offset.y * ChunkSize.z));
        BiomeSettings CurrentSettings = BiomeManager.BestMatch(temperature, humidity);

        bool placedTree = false;

        for (int z = 0; z < ChunkSize.z; z += 1)
        {
            for (int x = 0; x < ChunkSize.x; x += 1)
            {
                temperature     = TemperatureManager.GetTemperature(x + (int)(chunk.Offset.x * ChunkSize.x), z + (int)(chunk.Offset.y * ChunkSize.z));
                humidity        = TemperatureManager.GetHumidity(x + (int)(chunk.Offset.x * ChunkSize.x), z + (int)(chunk.Offset.y * ChunkSize.z));
                CurrentSettings = BiomeManager.BestMatch(temperature, humidity);


                // Global position of the cube.
                int   gX          = ((int)Offset.x * (int)Chunk.ChunkSize.x) + x;
                int   gZ          = ((int)Offset.y * (int)Chunk.ChunkSize.z) + z;
                float noiseResult = ((Noise.GetNoise2d(gX, gZ) * CurrentSettings.TerrainAmplitude) + 1f) * (ChunkSize.y / 2);
                float height      = Mathf.Clamp(Mathf.Stepify(noiseResult, 1), 0, 254);

                // Default type
                BlockType type = CurrentSettings.DefaultBlocktype;

                // Filling under the chunk too.
                for (int i = 0; i <= height; i++)
                {
                    chunk.Voxels[x, i, z].Active = true;
                    chunk.Voxels[x, i, z].Type   = type;
                }

                // Big mountains?
                if (CurrentSettings.Mountains)
                {
                    GenerateMountains(chunk, x, z, (int)Mathf.Clamp(height, 0f, 254f));
                }

                // Add X layers of block on top of the generated rock.
                var pos = chunk.HighestAt(x, z);
                for (int i = 0; i < CurrentSettings.TopLayerThickness; i++)
                {
                    // Adding some dirt under top layer.
                    var newType = CurrentSettings.UnderLayerType;

                    // if highest block, its grass!
                    if (i == 0)
                    {
                        newType = CurrentSettings.TopLayerType;
                    }

                    // Placing block. Making sure its under 255 height.
                    chunk.Voxels[x, Mathf.Clamp(pos - i, 0, 254), z].Type = newType;
                }



                // Placing decoration
                int decorationChance = rng.RandiRange(1, 100);
                if (decorationChance < CurrentSettings.DecorationRate)
                {
                    // Placing point
                    int dy   = chunk.HighestAt(x, z) + 1;
                    var mesh = (ArrayMesh)ResourceLoader.Load(CurrentSettings.DecorationModel);
                    chunk.AddVoxelSprite(new VoxelSprite(mesh, new Vector3(x, dy, z)));
                }



                // Placing trees
                float treeChance = rng.RandfRange(1f, 100f);
                //GD.Print(treeChance + " <= " + CurrentSettings.TreeRate);
                if (treeChance < CurrentSettings.TreeRate)
                {
                    //GD.Print("Placed tree");
                    var file = (ArrayMesh)ResourceLoader.Load(CurrentSettings.TreeModel);

                    int ty = chunk.HighestAt(x, z) + 1;

                    //Placing point.

                    // Creating and setting the mesh.
                    var meshInstance = new MeshInstance();
                    meshInstance.Mesh = file;
                    meshInstance.Name = CurrentSettings.TreeModel;
                    // Adding it next frame.(safe with mutex lock)
                    CallDeferred("add_child", meshInstance);
                    // Moving it next frame(not in the tree yet :))
                    meshInstance.SetDeferred("translation", new Vector3(x + (Offset.x * ChunkSize.x) - 10, ty,
                                                                        z + (Offset.y * ChunkSize.z + 10)));
                    //meshInstance.SetDeferred("rotation_degrees", new Vector3(0, rng.RandfRange(0, 360), 0));
                }
            }
        }
    }
Beispiel #17
0
        public BaseZoneGenerator(MacroMap macroMap, IEnumerable <Cell> zoneCells, int id, BiomeSettings biome, TriRunner settings)
        {
            _macroMap = macroMap;
            _settings = settings;
            _random   = new Random(unchecked (settings.Seed + id));

            _microReliefNoise = new FastNoise(_random.Seed);
            _microReliefNoise.SetFrequency(1);

            _resourcesNoise = new FastNoise(_random.Seed);
            _resourcesNoise.SetFrequency(0.05);

            Assert.IsTrue(zoneCells.All(c => c.ZoneId == id));

            Zone = new Macro.Zone(_macroMap, _macroMap.GetSubmesh(zoneCells), id, biome, settings);
        }
 public void SetBiome(BiomeSettings biome)
 {
     currentBiome = biome;
 }
Beispiel #19
0
        public CavesGenerator(MacroMap macroMap, IEnumerable <Cell> zoneCells, int id, BiomeSettings biome, TriRunner settings) : base(macroMap, zoneCells, id, biome, settings)
        {
            Assert.IsTrue(biome.Type == BiomeType.Caves);

            _cavesNoise = new FastNoise(_random.Seed);
            _cavesNoise.SetFrequency(0.1);
        }
Beispiel #20
0
        public MountainsGenerator(MacroMap macroMap, IEnumerable <Cell> zoneCells, int id, BiomeSettings biome, TriRunner settings) : base(macroMap, zoneCells, id, biome, settings)
        {
            Assert.IsTrue(biome.Type == BiomeType.Mountain);

            _microReliefNoise = new FastNoise(_random.Seed);
            _microReliefNoise.SetFrequency(1);
        }
Beispiel #21
0
 public TestZoneGenerator(MacroMap macroMap, IEnumerable <Cell> zoneCells, int id, BiomeSettings biome, TriRunner settings) : base(macroMap, zoneCells, id, biome, settings)
 {
     Assert.IsTrue(biome.Type >= BiomeType.TestBegin && biome.Type <= BiomeType.TestEnd);
     _generator = new FastNoise(unchecked (settings.Seed + id));
     _generator.SetFrequency(1);
 }