public float GetRelevanceWeight(Planet.PointOfInterest data) { var weight = GetSizeOnScreen(data); lastGenerationWeight = weight; return(weight); }
private float GetSizeOnScreen(Planet.PointOfInterest data) { var myPos = rangePosToCalculateScreenSizeOn_localToPlanet.CenterPos + planet.BigPosition; var distanceToCamera = BigPosition.Distance(myPos, data.pos); // TODO: this is world space, doesnt take into consideration rotation, not good, // but we dont care about rotation, we want to have correct detail even if we are looking at chunk from side? var sphere = rangePosToCalculateScreenSizeOn_localToPlanet.ToBoundingSphere(); var radiusWorldSpace = sphere.radius; var fov = data.fieldOfView; var cot = 1.0 / Mathf.Tan(fov / 2f * Mathf.Deg2Rad); var radiusCameraSpace = radiusWorldSpace * cot / distanceToCamera; lastDistanceToCamera = distanceToCamera; lastRadiusWorldSpace = radiusWorldSpace; return((float)radiusCameraSpace); }