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 _renderers = new List { new LandmassRenderer() }; public void GenerateRandom() { var generator = GetComponent(); 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().Map; if (map == null) return; foreach (var current in _renderers) current.Render(map, this); } public void OnDrawGizmos() { var map = GetComponent().Map; if (map == null) return; foreach (var current in _renderers) current.DrawGizmos(map, this); } } }