Skip to content
Snippets Groups Projects
BiomeMaster.cs 2.29 KiB
Newer Older
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
Ryan Chang's avatar
Ryan Chang committed
using NaughtyAttributes;
Ryan Chang's avatar
Ryan Chang committed
/// <summary>
/// Master class for biome generation.
/// </summary>
public class BiomeMaster : MonoBehaviour
{
Ryan Chang's avatar
Ryan Chang committed
    #region Variables
Ryan Chang's avatar
Ryan Chang committed
    [Header("Biome Parameters")]
    [InfoBox("Contains the parameters required for each biome.")]
Ryan Chang's avatar
Ryan Chang committed
    [OnValueChanged(nameof(UpdateDataTemplate))]
    public List<BiomeParameter> parameters;

Ryan Chang's avatar
Ryan Chang committed
    [Header("Biome Data")]
    [InfoBox("Contains the actual biomes. Each biome targets one or more biome " +
Ryan Chang's avatar
Ryan Chang committed
        "parameters. Every point on the terrain will be assigned a biome, " +
        "depending on how close the calculated " +
        "parameters are to the parameter target of that biome.")]
Ryan Chang's avatar
Ryan Chang committed
    public List<BiomeData> datas;

Ryan Chang's avatar
Ryan Chang committed
    #region Debug
    [Header("Debug")]
    public int debugSize = 500;

    public float debugFrequency = 0.1f;
Ryan Chang's avatar
Ryan Chang committed
    #endregion
    #endregion
Ryan Chang's avatar
Ryan Chang committed
    #region Buttons
Ryan Chang's avatar
Ryan Chang committed
    [Button("Debug Biome Parameters")]
    private void DebugParameters()
Ryan Chang's avatar
Ryan Chang committed
        for (int i = -debugSize; i < debugSize; i++)
Ryan Chang's avatar
Ryan Chang committed
            for (int j = -debugSize; j < debugSize; j++)
Ryan Chang's avatar
Ryan Chang committed
                float x = i * debugFrequency;
                float y = j * debugFrequency;
Ryan Chang's avatar
Ryan Chang committed
                float mu = 0;
Ryan Chang's avatar
Ryan Chang committed
                foreach (var param in parameters)
                {
Ryan Chang's avatar
Ryan Chang committed
                    param.DrawDebug(x + mu, y + mu);
                    mu += debugFrequency / 10;
Ryan Chang's avatar
Ryan Chang committed

Ryan Chang's avatar
Ryan Chang committed
    [Button("Reseed Biome Parameters")]
Ryan Chang's avatar
Ryan Chang committed
    private void ReseedParameters()
    {
        foreach (var param in parameters)
        {
            param.ReseedOctaves();
        }
    }
Ryan Chang's avatar
Ryan Chang committed

    [Button("Reseed Biome Data")]
    private void ReseedData()
    {
        foreach (var data in datas)
        {
            data.ReseedOctaves();
        }
    }

    [Button("Reseed All")]
    private void ReseedAll()
    {
        ReseedData();
        ReseedParameters();
    }

    [Button("Reset Biome Data")]
    private void ResetData()
    {
        foreach (var d in datas)
        {
            d.ResetParamTargets(parameters);
        }
    }
    #endregion

    #region Biome Data Generation
    private void UpdateDataTemplate()
    {
        foreach (var param in parameters)
        {
            
        }
    }
    #endregion
}