public void OnEnable() { LevelOfDetail myScript = (LevelOfDetail)target; if (myScript.levelDetailGroup == null) { myScript.levelDetailGroup = myScript.gameObject.GetComponent <LODGroup>(); } RecalculateLevelDistances(); }
public override void OnInspectorGUI() { DrawDefaultInspector(); LevelOfDetail myScript = (LevelOfDetail)target; if (myScript.levelDetailGroup == null) { myScript.levelDetailGroup = myScript.gameObject.GetComponent <LODGroup>(); } serializedObject.Update(); var groupLevel = serializedObject.FindProperty("groupLevelDistances"); if (groupLevel != null) { LevelDistanceEditorList.Show(groupLevel, this, false, false, "", ref myScript.showGroupLevels); } serializedObject.ApplyModifiedProperties(); EditorGUILayout.Space(); }
public void RecalculateLevelDistances() { LevelOfDetail myScript = (LevelOfDetail)target; if (myScript.levelDetailGroup != null) { myScript.groupLevelDistances.Clear(); var lodGroup = myScript.levelDetailGroup; float farClipingPlane = (Camera.main != null) ? Camera.main.farClipPlane : 1000.0f; LOD[] lods = lodGroup.GetLODs(); float startingPercent = -1f; float endingPercent = -1f; float lastPercent = 0f; int startRange = 0; int lodIndex = 0; foreach (var lod in lods) { endingPercent = lod.screenRelativeTransitionHeight; if (startingPercent == -1) { startingPercent = 1; } else { startingPercent = lastPercent; } float lodPercent = startingPercent - endingPercent; string lodFormatted = String.Format("LOD{0} - Babylon Camera Distance: {1}", lodIndex.ToString(), startRange.ToString()); myScript.groupLevelDistances.Add(lodFormatted); lastPercent = endingPercent; startRange += Unity3D2Babylon.Tools.CalculateCameraDistance(farClipingPlane, myScript.farClipPlaneScale, lodPercent); lodIndex++; } float startCulling = startRange; string cullingFormatted = String.Format("LODX - Babylon Camera Distance: {0}", startCulling.ToString()); myScript.groupLevelDistances.Add(cullingFormatted); } }