66 lines
1.6 KiB
C#
66 lines
1.6 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using Assets.Common;
|
|
using Assets.RenderPass;
|
|
using UnityEngine;
|
|
using UnityEngine.UIElements;
|
|
using Random = UnityEngine.Random;
|
|
|
|
namespace Assets
|
|
{
|
|
[RequireComponent(typeof(MeshFilter))]
|
|
[RequireComponent(typeof(MeshRenderer))]
|
|
[RequireComponent(typeof(LandmassGenerator))]
|
|
public class MapRenderer : MonoBehaviour
|
|
{
|
|
private bool _rerender = false;
|
|
|
|
private IList<IRenderer> _renderers = new List<IRenderer>
|
|
{
|
|
new LandmassRenderer()
|
|
};
|
|
|
|
public void GenerateRandom()
|
|
{
|
|
var generator = GetComponent<LandmassGenerator>();
|
|
|
|
generator.seed = Environment.TickCount;
|
|
generator.Generate(map => _rerender = true);
|
|
}
|
|
|
|
private void Update()
|
|
{
|
|
if (Input.GetMouseButtonDown(0))
|
|
GenerateRandom();
|
|
|
|
if (_rerender)
|
|
{
|
|
Render();
|
|
_rerender = false;
|
|
}
|
|
}
|
|
|
|
public void Render()
|
|
{
|
|
var map = GetComponent<LandmassGenerator>().Map;
|
|
|
|
if (map == null)
|
|
return;
|
|
|
|
foreach (var current in _renderers)
|
|
current.Render(map, this);
|
|
}
|
|
|
|
public void OnDrawGizmos()
|
|
{
|
|
var map = GetComponent<LandmassGenerator>().Map;
|
|
|
|
if (map == null)
|
|
return;
|
|
|
|
foreach (var current in _renderers)
|
|
current.DrawGizmos(map, this);
|
|
}
|
|
}
|
|
} |