public bool ShouldBeVisible(Vector3 from) { if (!_canLoad) { return(false); } var obj = Instance.Object; var dist = Vector3.Distance(from, transform.position); return((dist <= obj.DrawDist || (obj.DrawDist >= 300 && dist < 2560)) && (!HasLoaded || LodParent == null || !LodParent.IsVisible || !LodParent.ShouldBeVisible(from))); }
public bool ShouldBeVisible(Vector3 from) { if (!_canLoad) { return(false); } var obj = Instance.Object; // if (obj.HasFlag (ObjectFlag.DisableDrawDist)) // return true; // var dist = Vector3.Distance(from, transform.position); var distSquared = Vector3.SqrMagnitude(from - transform.position); if (distSquared > Cell.Instance.maxDrawDistance * Cell.Instance.maxDrawDistance) { return(false); } if (distSquared > obj.DrawDist * obj.DrawDist) { return(false); } if (!HasLoaded || LodParent == null || !LodParent.IsVisible) { return(true); } if (!LodParent.ShouldBeVisible(from)) { return(true); } return(false); // return (distSquared <= obj.DrawDist * obj.DrawDist || (obj.DrawDist >= 300 && distSquared < 2560*2560)) // && (!HasLoaded || LodParent == null || !LodParent.IsVisible || !LodParent.ShouldBeVisible(from)); }