using UnityEngine; namespace Assets.ThoMagic.Renderer { public class TreeStreamer : InstanceStreamer { private readonly Terrain _terrain; private Bounds worldBounds; private float maxTreeDistance; public TreeStreamer(Terrain terrain) : base() => _terrain = terrain; public void Build(float maxDistance) { maxTreeDistance = maxDistance; Vector3 position = _terrain.GetPosition(); worldBounds = new Bounds(_terrain.terrainData.bounds.center + position, _terrain.terrainData.bounds.size); } public override bool IsInRange(Camera referenceCamera, Plane[] planes) { if (!_terrain.editorRenderFlags.HasFlag(TerrainRenderFlags.Trees)) return false; var eyePos = referenceCamera.transform.position; if ((eyePos - worldBounds.ClosestPoint(eyePos)).magnitude <= Mathf.Min(referenceCamera.farClipPlane, maxTreeDistance)) return true; return false; } } }