Ejemplo n.º 1
0
        public void OnEnable()
        {
            LevelOfDetail myScript = (LevelOfDetail)target;

            if (myScript.levelDetailGroup == null)
            {
                myScript.levelDetailGroup = myScript.gameObject.GetComponent <LODGroup>();
            }
            RecalculateLevelDistances();
        }
Ejemplo n.º 2
0
        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();
        }
Ejemplo n.º 3
0
        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);
            }
        }