public override void OnInspectorGUI()
        {
            serializedObject.Update();

            EditorGUILayout.PropertyField(mCurrentBakedListener);

            EditorGUILayout.PropertyField(mApplyReverb);
            if (mApplyReverb.boolValue)
            {
                EditorGUILayout.PropertyField(mReverbType);
            }

            var oldGUIEnabled = GUI.enabled;

            GUI.enabled = !Baker.IsBakeActive() && !EditorApplication.isPlayingOrWillChangePlaymode;

            var tgt = target as SteamAudioListener;

            EditorGUILayout.PropertyField(mUseAllProbeBatches);
            if (!mUseAllProbeBatches.boolValue)
            {
                EditorGUILayout.PropertyField(mProbeBatches);
            }

            EditorGUILayout.Space();
            if (GUILayout.Button("Bake"))
            {
                tgt.BeginBake();
                mShouldShowProgressBar = true;
            }

            GUI.enabled = oldGUIEnabled;

            if (mShouldShowProgressBar && !Baker.IsBakeActive())
            {
                mShouldShowProgressBar = false;
            }

            if (mShouldShowProgressBar)
            {
                Baker.DrawProgressBar();
            }

            Repaint();

            EditorGUILayout.Space();
            mStatsFoldout = EditorGUILayout.Foldout(mStatsFoldout, "Baked Data Statistics");
            if (mStatsFoldout && !Baker.IsBakeActive())
            {
                for (var i = 0; i < tgt.GetProbeBatchesUsed().Length; ++i)
                {
                    EditorGUILayout.LabelField(tgt.GetProbeBatchesUsed()[i].gameObject.name, Common.HumanReadableDataSize(tgt.GetProbeDataSizes()[i]));
                }
                EditorGUILayout.LabelField("Total Size", Common.HumanReadableDataSize(tgt.GetTotalDataSize()));
            }

            serializedObject.ApplyModifiedProperties();
        }
コード例 #2
0
        public override void OnInspectorGUI()
        {
            serializedObject.Update();

            var oldGUIEnabled = GUI.enabled;

            GUI.enabled = !Baker.IsBakeActive() && !EditorApplication.isPlayingOrWillChangePlaymode;

            var tgt = target as SteamAudioProbeBatch;

            EditorGUILayout.PropertyField(mAsset);

            EditorGUILayout.PropertyField(mPlacementStrategy);
            if ((ProbeGenerationType)mPlacementStrategy.enumValueIndex == ProbeGenerationType.UniformFloor)
            {
                EditorGUILayout.PropertyField(mHorizontalSpacing);
                EditorGUILayout.PropertyField(mHeightAboveFloor);
            }

            EditorGUILayout.Space();
            if (GUILayout.Button("Generate Probes"))
            {
                tgt.GenerateProbes();
                EditorSceneManager.MarkSceneDirty(SceneManager.GetActiveScene());
            }

            if (tgt.GetNumProbes() > 0)
            {
                EditorGUILayout.Space();
                EditorGUILayout.LabelField("Baked Pathing Settings", EditorStyles.boldLabel);
                if (GUILayout.Button("Bake"))
                {
                    tgt.BeginBake();
                    mShouldShowProgressBar = true;
                }
            }

            GUI.enabled = oldGUIEnabled;

            if (mShouldShowProgressBar && !Baker.IsBakeActive())
            {
                mShouldShowProgressBar = false;
            }

            if (mShouldShowProgressBar)
            {
                Baker.DrawProgressBar();
            }

            Repaint();

            if (tgt.GetNumProbes() > 0)
            {
                EditorGUILayout.Space();
                EditorGUILayout.LabelField("Probe Statistics", EditorStyles.boldLabel);
                EditorGUILayout.LabelField("Probes", tgt.GetNumProbes().ToString());
                EditorGUILayout.LabelField("Data Size", Common.HumanReadableDataSize(tgt.probeDataSize));

                if (tgt.GetNumLayers() > 0)
                {
                    EditorGUILayout.Space();
                    EditorGUILayout.LabelField("Detailed Statistics", EditorStyles.boldLabel);
                    for (var i = 0; i < tgt.GetNumLayers(); ++i)
                    {
                        var layerInfo = tgt.GetInfoForLayer(i);

                        var name = "";
                        if (layerInfo.identifier.type == BakedDataType.Pathing)
                        {
                            name = "Pathing";
                        }
                        else if (layerInfo.identifier.variation == BakedDataVariation.Reverb)
                        {
                            name = "Reverb";
                        }
                        else
                        {
                            name = layerInfo.gameObject.name;
                        }

                        EditorGUILayout.BeginHorizontal();
                        EditorGUILayout.LabelField(name, Common.HumanReadableDataSize(layerInfo.dataSize));
                        if (GUILayout.Button("Clear"))
                        {
                            tgt.DeleteBakedDataForIdentifier(layerInfo.identifier);
                            EditorSceneManager.MarkSceneDirty(SceneManager.GetActiveScene());
                        }
                        EditorGUILayout.EndHorizontal();
                    }
                }
            }

            serializedObject.ApplyModifiedProperties();
        }