void DrawRenderingSettings()
        {
            m_RenderingSettingsFoldout.value = EditorGUILayout.BeginFoldoutHeaderGroup(m_RenderingSettingsFoldout.value, Styles.renderingSettingsText);
            if (m_RenderingSettingsFoldout.value)
            {
                DrawRenderer();

                var selectedCameraType = (CameraRenderType)m_AdditionalCameraDataCameraTypeProp.intValue;
                if (selectedCameraType == CameraRenderType.Base)
                {
                    DrawPostProcessing();
                }

                if (selectedCameraType == CameraRenderType.Overlay)
                {
                    EditorGUILayout.PropertyField(m_AdditionalCameraClearDepth, Styles.clearDepth);
                    m_AdditionalCameraDataSO.ApplyModifiedProperties();
                }

                DrawOpaqueTexture();
                DrawDepthTexture();
                DrawRenderShadows();

                if (selectedCameraType == CameraRenderType.Base)
                {
                    DrawPriority();
                }

                settings.DrawCullingMask();
                settings.DrawOcclusionCulling();

                EditorGUILayout.Space();
                EditorGUILayout.Space();
            }
            EditorGUILayout.EndFoldoutHeaderGroup();
        }
        private void Settings()
        {
            settingsFoldout = EditorGUILayout.BeginFoldoutHeaderGroup(settingsFoldout, "Settings");
            if (!settingsFoldout)
            {
                EditorGUILayout.EndFoldoutHeaderGroup();
                return;
            }
            EditorGUI.indentLevel++;
            double maximumTimeBetweenTriggers;

            EditorGUILayout.LabelField(new GUIContent("Maximum Time Between Triggers", "If two triggers are further apart than this time, the system will not count it towards you working on  the game. Default = 5 minutes, take a look at the mean time between triggers and add something extra"));
            if (Double.TryParse(EditorGUILayout.TextField("Minutes: ", TimeTracker.Settings.MaximumMinutesBetweenTriggers.ToString()), out maximumTimeBetweenTriggers))
            {
                if (maximumTimeBetweenTriggers != TimeTracker.Settings.MaximumMinutesBetweenTriggers)
                {
                    TimeTracker.Settings.MaximumMinutesBetweenTriggers = maximumTimeBetweenTriggers;
                    TimeTracker.SaveSettings();
                }
            }

            EditorGUI.indentLevel--;
            EditorGUILayout.EndFoldoutHeaderGroup();
        }
    public override void OnInspectorGUI()
    {
        base.OnInspectorGUI();

        serializedObject.Update();

        EditorGUILayout.Space();
        EditorGUILayout.Space();
        EditorGUILayout.PropertyField(m_NeedHead);
        EditorGUILayout.PropertyField(m_HeadHeight);
        EditorGUILayout.Space();
        EditorGUILayout.Space();
        EditorGUILayout.PropertyField(m_ListColumns);
        EditorGUILayout.PropertyField(m_CellSize);
        EditorGUILayout.PropertyField(m_CellSpace);
        EditorGUILayout.PropertyField(m_ListPadding, true);
        EditorGUILayout.Space();
        EditorGUILayout.Space();
        EditorGUILayout.PropertyField(m_ContentSpacing);
        EditorGUILayout.PropertyField(m_ContentPadding, true);
        EditorGUILayout.EndFoldoutHeaderGroup();

        serializedObject.ApplyModifiedProperties();
    }
Exemple #4
0
        void DrawOutputSettings()
        {
            m_OutputSettingsFoldout.value = EditorGUILayout.BeginFoldoutHeaderGroup(m_OutputSettingsFoldout.value, Styles.outputSettingsText);
            if (m_OutputSettingsFoldout.value)
            {
                DrawTargetTexture();

                if (camera.targetTexture == null)
                {
                    DrawHDR();
                    DrawMSAA();
                    settings.DrawNormalizedViewPort();
                    settings.DrawDynamicResolution();
                    settings.DrawMultiDisplay();
                }
                // Third option comes later.

                EditorGUILayout.Space();
                EditorGUILayout.Space();

                DrawVRSettings();
            }
            EditorGUILayout.EndFoldoutHeaderGroup();
        }
Exemple #5
0
        void DisplayAssetGroup(AssetGroupViewData group, GUIContent label, string statusMessage, MessageType status)
        {
            if (group.Expanded = EditorGUILayout.BeginFoldoutHeaderGroup(group.Expanded, label))
            {
                ++EditorGUI.indentLevel;
                if (!string.IsNullOrEmpty(statusMessage))
                {
                    EditorGUILayout.HelpBox(statusMessage, status);
                }
                foreach (var path in group.AssetPathsAndStatuses)
                {
                    var rowRect = EditorGUI.IndentedRect(
                        EditorGUILayout.GetControlRect(false, EditorGUIUtility.singleLineHeight)
                        );

                    s_TempContent.text    = path.Key;
                    s_TempContent.tooltip = path.Value;
                    GUI.Label(new Rect(rowRect)
                    {
                        xMax = rowRect.xMax - Styles.FindAssetButtonWidth
                    }, s_TempContent);

                    if (
                        GUI.Button(new Rect(rowRect)
                    {
                        xMin = rowRect.xMax - Styles.FindAssetButtonWidth
                    }, Content.FindAsset)
                        )
                    {
                        EditorGUIUtility.PingObject(AssetDatabase.LoadMainAssetAtPath(path.Key));
                    }
                }
                --EditorGUI.indentLevel;
            }
            EditorGUILayout.EndFoldoutHeaderGroup();
        }
Exemple #6
0
        static void DrawGroup <T>(List <T> list, GUIContent foldContent, GUIContent[] contents,
                                  bool[] foldStates, ref bool topFoldState, Action <T> drawSingle)
        {
            if (list.Count == 0)
            {
                return;
            }

            topFoldState = EditorGUILayout.Foldout(topFoldState, foldContent);
            if (!topFoldState)
            {
                return;
            }

            using (new EditorGUI.IndentLevelScope())
            {
                for (var i = 0; i < list.Count; i++)
                {
                    var foldoutState = foldStates[i];
                    foldoutState = EditorGUILayout.BeginFoldoutHeaderGroup(foldoutState,
                                                                           contents[i]);

                    foldStates[i] = foldoutState;
                    if (!foldoutState)
                    {
                        EditorGUILayout.EndFoldoutHeaderGroup();
                        continue;
                    }

                    drawSingle(list[i]);
                    EditorGUILayout.EndFoldoutHeaderGroup();
                }
            }

            EditorGUILayout.Separator();
        }
Exemple #7
0
        private void DrawRendering()
        {
            using (new EditorGUILayout.VerticalScope(EditorStyles.helpBox))
            {
                GUILayout.Space(-5f);
                m_RenderingOptionsFoldout = EditorGUILayout.BeginFoldoutHeaderGroup(m_RenderingOptionsFoldout, new GUIContent("Rendering"));
                if (m_RenderingOptionsFoldout)
                {
                    EditorGUI.indentLevel++;
                    var cullingMode = (int)culling.floatValue;

                    cullingMode = EditorGUILayout.Popup("Culling", cullingMode, new string[] { "Double-sided", "Front-faces", "Back-faces" });

                    culling.floatValue = cullingMode;
                    materialEditor.ShaderProperty(disableShadows, "Receive Shadows");
                    materialEditor.ShaderProperty(alphaToCoverage, new GUIContent("Alpha to coverage", "Reduces aliasing when using MSAA"));
                    if (alphaToCoverage.floatValue > 0 && UniversalRenderPipeline.asset.msaaSampleCount == 1)
                    {
                        EditorGUILayout.HelpBox("MSAA is disabled, alpha to coverage will have no effect", MessageType.None);
                    }

                    enableDistFade = EditorGUILayout.Toggle(new GUIContent("Distance fading", "Reduces the alpha clipping based on camera distance." +
                                                                           "\n\nNote that this does not improve performance, only pixels are being hidden, meshes are still being rendered, " +
                                                                           "best to match these settings to your maximum grass draw distance"), enableDistFade);
                    if (enableDistFade)
                    {
                        EditorGUI.indentLevel++;
                        DrawMinMaxSlider("Start/End", ref fadeStartDist, ref fadeEndDist);
                        EditorGUI.indentLevel--;
                    }

                    EditorGUI.indentLevel--;
                }
                EditorGUILayout.EndFoldoutHeaderGroup();
            }
        }
Exemple #8
0
    void OnGUIInfo(Rect size)
    {
        GUILayout.BeginArea(size);
        Info = EditorGUILayout.BeginFoldoutHeaderGroup(Info, "Info");
        if (Info)
        {
            scrollPosition = EditorGUILayout.BeginScrollView(scrollPosition);
            if (Selection.gameObjects != null)
            {
                foreach (var k in Selection.gameObjects)
                {
                    Hex cell = k.gameObject.GetComponent <Hex>();
                    if (cell)
                    {
                        MapCellTool.Draw(cell);
                    }

                    HexBuilding build = k.gameObject.GetComponent <HexBuilding>();
                    if (build)
                    {
                        if (build.hex)
                        {
                            GUI.color = Color.red;
                            EditorGUILayout.LabelField("选中了建筑");
                            GUI.color = Color.white;
                            MapCellTool.Draw(build.hex);
                        }
                    }
                }
            }
            EditorGUILayout.EndScrollView();
        }
        EditorGUILayout.EndFoldoutHeaderGroup();

        GUILayout.EndArea();
    }
Exemple #9
0
        private void GUISyncing()
        {
            if (hiveType != HiveType.Remote && behaviourType != SpecialBehaviourType.MirrorManager)
            {
                headerSync = EditorGUILayout.BeginFoldoutHeaderGroup(headerSync, "Syncing", headerStyle);
                if (headerSync)
                {
                    EditorGUI.BeginChangeCheck();

                    synced = EditorGUILayout.Toggle("Is Synced", action.is_synced);

                    if (EditorGUI.EndChangeCheck())
                    {
                        Undo.RecordObject(action, "Modify Syncing");
                        action.is_synced = synced;
                    }
                }
                EditorGUILayout.EndFoldoutHeaderGroup();
            }
            else
            {
                action.is_synced = false;
            }
        }
Exemple #10
0
        void DrawOutputSettings()
        {
            m_OutputSettingsFoldout.value = EditorGUILayout.BeginFoldoutHeaderGroup(m_OutputSettingsFoldout.value, Styles.outputSettingsText);
            if (m_OutputSettingsFoldout.value)
            {
                var selectedCameraType = (CameraRenderType)m_AdditionalCameraDataCameraTypeProp.intValue;

                if (selectedCameraType == CameraRenderType.Base)
                {
                    DrawHDR();
                    DrawMSAA();
                    settings.DrawNormalizedViewPort();
                    settings.DrawDynamicResolution();
                    settings.DrawMultiDisplay();
                }
                else if (selectedCameraType == CameraRenderType.Offscreen)
                {
                    DrawTargetTexture();
                }
                EditorGUILayout.Space();
                EditorGUILayout.Space();
            }
            EditorGUILayout.EndFoldoutHeaderGroup();
        }
Exemple #11
0
        public override void OnInspectorGUI()
        {
            if (HasErrors())
            {
                return;
            }

            BeginEditing();

            OnPreInspectorGUI();

            PropertyField(_thresholdProperty, "Hit Threshold");
            OnTargetInspectorGUI();

            // physics material
            if (_foldoutMaterial = EditorGUILayout.BeginFoldoutHeaderGroup(_foldoutMaterial, "Physics Material"))
            {
                EditorGUI.BeginDisabledGroup(_overwritePhysicsProperty.boolValue);
                PropertyField(_physicsMaterialProperty, "Preset");
                EditorGUI.EndDisabledGroup();

                PropertyField(_overwritePhysicsProperty);

                EditorGUI.BeginDisabledGroup(!_overwritePhysicsProperty.boolValue);
                PropertyField(_elasticityProperty);
                PropertyField(_elasticityFalloffProperty);
                PropertyField(_frictionProperty);
                PropertyField(_scatterProperty, "Scatter Angle");
                EditorGUI.EndDisabledGroup();
            }
            EditorGUILayout.EndFoldoutHeaderGroup();

            base.OnInspectorGUI();

            EndEditing();
        }
Exemple #12
0
        void DrawPreviewControls()
        {
            GUIStyle foldoutStyle = EditorStyles.foldout;

            foldoutStyle.fontStyle = FontStyle.Bold;

            // Preview settings.
            GUILayout.Space(5);

            previewSettingsFoldout = EditorGUILayout.BeginFoldoutHeaderGroup(previewSettingsFoldout, "Preview settings", foldoutStyle);
            if (previewSettingsFoldout)
            {
                EditorGUI.indentLevel++;

                previewType = (PreviewType)EditorGUILayout.EnumPopup("Preview type", previewType);

                EditorGUI.indentLevel++;
                if (currentWindowTab == 0)
                {
                    textureModule.DrawPreviewControls(previewType);
                }
                else
                {
                    toolsModule.DrawPreviewControls(previewType);
                }

                EditorGUI.indentLevel--;

                previewMode = (PreviewMode)EditorGUILayout.Popup("Live preview", (int)previewMode, previewModeStrings);

                EditorGUI.indentLevel--;
            }
            EditorGUILayout.EndFoldoutHeaderGroup();

            GUILayout.Space(5);
        }
Exemple #13
0
        public override void OnInspectorGUI()
        {
            if (target is MeshGenerator meshGenerator && meshGenerator.Field is ScalarField scalarField)
            {
                using (var changeCheckScope = new EditorGUI.ChangeCheckScope()) {
                    var size     = EditorGUILayout.Vector3IntField("Size", meshGenerator.size).ToSize();
                    var step     = EditorGUILayout.Vector3Field("Step", meshGenerator.step).ToSize();
                    var isoLevel = Mathf.Clamp01(EditorGUILayout.Slider("IsoLevel", meshGenerator.isoLevel, 0, 1));

                    if (changeCheckScope.changed)
                    {
                        meshGenerator.Generate();

                        Undo.RecordObject(target, "Change Fields");
                        meshGenerator.size     = size;
                        meshGenerator.step     = step;
                        meshGenerator.isoLevel = isoLevel;
                    }
                }

                using (var changeCheckScope = new EditorGUI.ChangeCheckScope()) {
                    _isFieldsExpanded = EditorGUILayout.BeginFoldoutHeaderGroup(_isFieldsExpanded, "Fields");
                    if (_isFieldsExpanded)
                    {
                        FieldEditorGUI.InvokeGUI(scalarField);
                    }

                    EditorGUILayout.EndFoldoutHeaderGroup();

                    if (changeCheckScope.changed)
                    {
                        meshGenerator.Generate();
                    }
                }
            }
        }
        void DrawShadowSettings()
        {
            m_ShadowSettingsFoldout.value = EditorGUILayout.BeginFoldoutHeaderGroup(m_ShadowSettingsFoldout.value, Styles.shadowSettingsText);
            if (m_ShadowSettingsFoldout.value)
            {
                EditorGUI.indentLevel++;
                m_ShadowDistanceProp.floatValue = Mathf.Max(0.0f, EditorGUILayout.FloatField(Styles.shadowDistanceText, m_ShadowDistanceProp.floatValue));
                CoreEditorUtils.DrawPopup(Styles.shadowCascadesText, m_ShadowCascadesProp, Styles.shadowCascadeOptions);

                ShadowCascadesOption cascades = (ShadowCascadesOption)m_ShadowCascadesProp.intValue;
                if (cascades == ShadowCascadesOption.FourCascades)
                    LightweightRenderPipelineEditorUtils.DrawCascadeSplitGUI<Vector3>(ref m_ShadowCascade4SplitProp);
                else if (cascades == ShadowCascadesOption.TwoCascades)
                    LightweightRenderPipelineEditorUtils.DrawCascadeSplitGUI<float>(ref m_ShadowCascade2SplitProp);

                m_ShadowDepthBiasProp.floatValue = EditorGUILayout.Slider(Styles.shadowDepthBias, m_ShadowDepthBiasProp.floatValue, 0.0f, LightweightRenderPipeline.maxShadowBias);
                m_ShadowNormalBiasProp.floatValue = EditorGUILayout.Slider(Styles.shadowNormalBias, m_ShadowNormalBiasProp.floatValue, 0.0f, LightweightRenderPipeline.maxShadowBias);
                EditorGUILayout.PropertyField(m_SoftShadowsSupportedProp, Styles.supportsSoftShadows);
                EditorGUI.indentLevel--;
                EditorGUILayout.Space();
                EditorGUILayout.Space();
            }
            EditorGUILayout.EndFoldoutHeaderGroup();
        }
Exemple #15
0
        void DrawAdvancedSettings()
        {
            m_AdvancedSettingsFoldout.value = EditorGUILayout.BeginFoldoutHeaderGroup(m_AdvancedSettingsFoldout.value, Styles.advancedSettingsText);
            if (m_AdvancedSettingsFoldout.value)
            {
                EditorGUI.indentLevel++;
                EditorGUILayout.PropertyField(m_SRPBatcher, Styles.srpBatcher);
                EditorGUILayout.PropertyField(m_SupportsDynamicBatching, Styles.dynamicBatching);
                EditorGUILayout.PropertyField(m_MixedLightingSupportedProp, Styles.mixedLightingSupportLabel);
                EditorGUILayout.PropertyField(m_ShaderVariantLogLevel, Styles.shaderVariantLogLevel);
                if (m_ShaderVariantLogLevel.enumValueIndex == (int)ShaderVariantLogLevel.ShowIfAbove)
                {
                    EditorGUI.indentLevel++;
                    EditorGUILayout.PropertyField(m_ShaderVariantShowNumProp, Styles.shaderVariantNumberLabel);
                    EditorGUI.indentLevel--;
                }
                EditorGUILayout.PropertyField(m_killShaderVariantsAssetProp);

                EditorGUI.indentLevel--;
                EditorGUILayout.Space();
                EditorGUILayout.Space();
            }
            EditorGUILayout.EndFoldoutHeaderGroup();
        }
Exemple #16
0
        public override void OnInspectorGUI()
        {
            base.OnInspectorGUI();

            var editable          = target as IItemMainAuthoring;
            var dragPointEditable = target as IDragPointsEditable;

            if (editable == null || dragPointEditable == null)
            {
                return;
            }

            var editButtonText = dragPointEditable.DragPointEditEnabled ? "Stop Editing Drag Points" : "Edit Drag Points";

            if (GUILayout.Button(editButtonText))
            {
                dragPointEditable.DragPointEditEnabled = !dragPointEditable.DragPointEditEnabled;
                SceneView.RepaintAll();
            }

            if (dragPointEditable.DragPointEditEnabled)
            {
                if (editable.IsLocked)
                {
                    EditorGUILayout.LabelField("Drag Points are Locked");
                }
                else
                {
                    _foldoutControlPoints = EditorGUILayout.BeginFoldoutHeaderGroup(_foldoutControlPoints, "Drag Points");
                    if (_foldoutControlPoints)
                    {
                        EditorGUI.indentLevel++;
                        for (var i = 0; i < DragPointsHandler.ControlPoints.Count; ++i)
                        {
                            var controlPoint = DragPointsHandler.ControlPoints[i];
                            EditorGUILayout.BeginHorizontal();
                            EditorGUILayout.LabelField($"#{i} ({controlPoint.DragPoint.Center.X},{controlPoint.DragPoint.Center.Y},{controlPoint.DragPoint.Center.Z})");
                            if (GUILayout.Button("Copy"))
                            {
                                CopyDragPoint(controlPoint.ControlId);
                            }
                            else if (GUILayout.Button("Paste"))
                            {
                                PasteDragPoint(controlPoint.ControlId);
                            }
                            EditorGUILayout.EndHorizontal();
                            EditorGUI.indentLevel++;
                            if (HasDragPointExposure(DragPointExposure.SlingShot))
                            {
                                ItemDataField("Slingshot", ref controlPoint.DragPoint.IsSlingshot);
                            }
                            if (HasDragPointExposure(DragPointExposure.Smooth))
                            {
                                ItemDataField("Smooth", ref controlPoint.DragPoint.IsSmooth);
                            }
                            if (HasDragPointExposure(DragPointExposure.Texture))
                            {
                                ItemDataField("Has AutoTexture", ref controlPoint.DragPoint.HasAutoTexture);
                                ItemDataSlider("Texture Coord", ref controlPoint.DragPoint.TextureCoord, 0.0f, 1.0f);
                            }
                            EditorGUI.indentLevel--;
                        }
                        EditorGUI.indentLevel--;
                    }
                    EditorGUILayout.EndFoldoutHeaderGroup();
                }
            }
        }
Exemple #17
0
    public override void OnGUI(MaterialEditor editor, MaterialProperty[] properties)
    {
        GUILayout.BeginHorizontal();
        GUILayout.Label(Resources.Load <Texture>("TOON_WATER_LOGO"), GUILayout.Width(308), GUILayout.Height(244));
        GUILayout.EndHorizontal();

        //WATER COLORS
        colorsFoldout = EditorGUILayout.BeginFoldoutHeaderGroup(colorsFoldout, "Water Colors");
        if (colorsFoldout)
        {
            MaterialProperty waterDepth = FindProperty(WATER_DEPTH_ID, properties);
            editor.FloatProperty(waterDepth, "Water Depth");

            MaterialProperty shallowColor = FindProperty(SHALLOW_WATER_COLOR_ID, properties);
            editor.ColorProperty(shallowColor, "Shallow Water Color");

            MaterialProperty deepColor = FindProperty(DEEP_WATER_COLOR_ID, properties);
            editor.ColorProperty(deepColor, "Deep Water Color");
        }
        EditorGUILayout.EndFoldoutHeaderGroup();

        //LIGHTNING
        lightningFoldout = EditorGUILayout.BeginFoldoutHeaderGroup(lightningFoldout, "Light settings");
        if (lightningFoldout)
        {
            MaterialProperty specularPower = FindProperty(SPECULAR_ID, properties);
            editor.RangeProperty(specularPower, "Specular Power");

            MaterialProperty specularCutoff = FindProperty(SPECULAR_CUTOFF_ID, properties);
            editor.RangeProperty(specularCutoff, "Specular Cutoff");

            MaterialProperty specularEdgesSmoothnessFactor = FindProperty(SPECULAR_EDGES_SMOOTHNESS_FACTOR_ID, properties);
            editor.RangeProperty(specularEdgesSmoothnessFactor, "Specular Edges Smoothness Factor");

            MaterialProperty specularColor = FindProperty(SPECULAR_COLOR_ID, properties);
            editor.ColorProperty(specularColor, "Specular Color");

            MaterialProperty normalsStrenght = FindProperty(NORMALS_STRENGTH_ID, properties);
            editor.FloatProperty(normalsStrenght, "Normals Strength");
        }
        EditorGUILayout.EndFoldoutHeaderGroup();

        //FRESNEL
        fresnelFoldout = EditorGUILayout.BeginFoldoutHeaderGroup(fresnelFoldout, "Fresnel");
        if (fresnelFoldout)
        {
            MaterialProperty fresnelPower = FindProperty(FRESNEL_POWER_ID, properties);
            editor.RangeProperty(fresnelPower, "Fresnel Power");

            if (fresnelPower.floatValue <= 0)
            {
                EditorGUILayout.HelpBox("When Fresnel Power is set to 0 effect is disabled and Planar Reflections will not be visible!", MessageType.Info);
            }
        }
        EditorGUILayout.EndFoldoutHeaderGroup();

        //REFRACTION
        refractionFoldout = EditorGUILayout.BeginFoldoutHeaderGroup(refractionFoldout, "Refraction");
        if (refractionFoldout)
        {
            MaterialProperty refractionStrenght = FindProperty(REFRACTION_STRENGTH_ID, properties);
            editor.RangeProperty(refractionStrenght, "Refraction Strength");

            MaterialProperty useRefraction = FindProperty(USE_REFRACTION_IN_DEPTH_BASED_WATER_COLOR, properties);
            useRefraction.floatValue = EditorGUILayout.Toggle("Use Refraction In Depth Based Water Color", useRefraction.floatValue > 0) ? 1 : 0;
        }
        EditorGUILayout.EndFoldoutHeaderGroup();

        //REFLECTION
        reflectionFoldout = EditorGUILayout.BeginFoldoutHeaderGroup(reflectionFoldout, "Planar Reflections");
        if (reflectionFoldout)
        {
            MaterialProperty reflectionVisiblity = FindProperty(REFLECTION_VISIBILITY_ID, properties);
            editor.RangeProperty(reflectionVisiblity, "Reflection Visibility");

            MaterialProperty reflectionDistortion = FindProperty(REFLECTION_DISTORTION_STRENGHT, properties);
            editor.RangeProperty(reflectionDistortion, "Reflection Distortion Strenght");
        }
        EditorGUILayout.EndFoldoutHeaderGroup();

        //FOAM
        foamFoldout = EditorGUILayout.BeginFoldoutHeaderGroup(foamFoldout, "Foam");
        if (foamFoldout)
        {
            MaterialProperty foamColor = FindProperty(FOAM_COLOR_ID, properties);
            editor.ColorProperty(foamColor, "Foam Color");

            MaterialProperty foamAmount = FindProperty(FOAM_AMOUNT_ID, properties);
            editor.FloatProperty(foamAmount, "Foam Amount");

            MaterialProperty foamCutoff = FindProperty(FOAM_CUTOFF_ID, properties);
            editor.FloatProperty(foamCutoff, "Foam Cutoff");

            MaterialProperty foamDirection = FindProperty(FOAM_DIRECTION_ID, properties);
            editor.VectorProperty(foamDirection, "Foam Direction");

            MaterialProperty foamScale = FindProperty(FOAM_SCALE_ID, properties);
            editor.VectorProperty(foamScale, "Foam Scale");
        }
        EditorGUILayout.EndFoldoutHeaderGroup();

        //WAVES
        wavesFoldout = EditorGUILayout.BeginFoldoutHeaderGroup(wavesFoldout, "Waves");
        if (wavesFoldout)
        {
            MaterialProperty waveDir = FindProperty(WAVE_DIRECTION_ID, properties);
            editor.VectorProperty(waveDir, "Wave Direction");

            MaterialProperty waveSize = FindProperty(WAVE_SIZE_ID, properties);
            editor.VectorProperty(waveSize, "Wave Size");
        }
        EditorGUILayout.EndFoldoutHeaderGroup();
    }
Exemple #18
0
        protected void OnGUI()
        {
            if (m_Settings == null)
            {
                m_Settings      = CreateInstance <SdfBakerSettings>();
                m_Settings.name = "None";
            }
            bool needsUpdate = false;

            Undo.RecordObject(this, "Settings Asset change");
            Undo.RecordObject(m_Settings, "SDF Baker Parameter change");
            GUILayout.BeginHorizontal();


            EditorGUI.BeginChangeCheck();
            var newSettings = (SdfBakerSettings)EditorGUILayout.ObjectField(Contents.settingsAsset, m_Settings, typeof(SdfBakerSettings), true, GUILayout.MinWidth(20),
                                                                            GUILayout.MaxWidth(400), GUILayout.ExpandWidth(true));

            if (EditorGUI.EndChangeCheck())
            {
                if (newSettings != null)
                {
                    LoadSettings(newSettings);
                }
                else
                {
                    CreateNewSession();
                }
            }
            GUILayout.Space(5);


            GUI.enabled = EditorUtility.IsDirty(m_Settings);
            if (GUILayout.Button(Contents.saveSettings, GUILayout.MinWidth(20), GUILayout.ExpandWidth(true)))
            {
                SaveSettings();
            }
            GUI.enabled = true;
            DrawContextIcon();
            GUILayout.EndHorizontal();
            GUILayout.Space(5);

            EditorGUI.BeginChangeCheck();
            maxResolution = Mathf.Clamp(EditorGUILayout.IntField(Contents.maxResolution, maxResolution), 8, 1024);
            bool maxResChanged = EditorGUI.EndChangeCheck();

            needsUpdate |= maxResChanged;
            if (maxResolution > 255)
            {
                EditorGUILayout.HelpBox(
                    "Higher resolutions are more expensive to calculate and can make Unity unstable.",
                    MessageType.Warning);
            }

            EditorGUI.BeginChangeCheck();
            var prevWideMode = EditorGUIUtility.wideMode;

            EditorGUIUtility.wideMode = true;
            boxCenter    = EditorGUILayout.Vector3Field("Box Center", boxCenter);
            needsUpdate |= EditorGUI.EndChangeCheck();

            EditorGUI.BeginChangeCheck();
            boxSizeReference = EditorGUILayout.Vector3Field(Contents.boxSizeReference, boxSizeReference);
            bool boxSizeChanged = EditorGUI.EndChangeCheck();

            needsUpdate |= boxSizeChanged;

            if (boxSizeChanged || maxResChanged)
            {
                m_ActualBoxSize = SnapBoxToVoxels();
            }

            using (new EditorGUI.DisabledScope(true))
            {
                SerializedObject selfSO = new SerializedObject(this);
                EditorGUILayout.PropertyField(selfSO.FindProperty("m_ActualBoxSize"), Contents.actualBoxSize);
            }


            if (boxSizeReference.x * boxSizeReference.y * boxSizeReference.z <= Single.Epsilon)
            {
                EditorGUILayout.HelpBox("The volume of your bounding box is zero.", MessageType.Warning);
            }

            int estimatedGridSize = EstimateGridSize();

            if (estimatedGridSize > 1 << 21 || selectedMesh == null)
            {
                GUI.enabled  = false;
                m_LiveUpdate = false;
            }

            EditorGUI.BeginChangeCheck();
            m_LiveUpdate = EditorGUILayout.Toggle(Contents.liveUpdate, m_LiveUpdate);
            needsUpdate |= (EditorGUI.EndChangeCheck() & m_LiveUpdate);

            GUI.enabled = true;
            if (m_LiveUpdate)
            {
                EditorGUILayout.HelpBox(
                    "Baking the mesh in real-time might cause slowdowns or instabilities when the resolution and/or the sign passes count is high ",
                    MessageType.Warning);
            }

            bool fitPaddingChanged = false;

            if (m_ShowAdvanced)
            {
                m_FoldOutParameters = EditorGUILayout.BeginFoldoutHeaderGroup(m_FoldOutParameters, Contents.bakingParameters);
                EditorGUI.BeginChangeCheck();
                if (m_FoldOutParameters)
                {
                    EditorGUI.indentLevel++;
                    signPassesCount = Mathf.Clamp(EditorGUILayout.IntField(Contents.signPass, signPassesCount), 0,
                                                  20);
                    inOutThreshold = EditorGUILayout.Slider(Contents.inOutParam, inOutThreshold, 0.0f, 1.0f);
                    surfaceOffset  = EditorGUILayout.Slider(Contents.sdfOffset, surfaceOffset, -0.5f, 0.5f);
                    EditorGUI.indentLevel--;
                }
                EditorGUILayout.EndFoldoutHeaderGroup();
                needsUpdate |= EditorGUI.EndChangeCheck();

                EditorGUI.BeginChangeCheck();
                m_Settings.m_FitPaddingVoxel = EditorGUILayout.Vector3IntField(Contents.fitPadding, m_Settings.m_FitPaddingVoxel);
                fitPaddingChanged            = EditorGUI.EndChangeCheck();
            }
            EditorGUIUtility.wideMode = prevWideMode;

            if (selectedMesh != null)
            {
                EditorGUILayout.BeginHorizontal();
                EditorGUI.BeginChangeCheck();
                if (GUILayout.Button(Contents.fitBoxToMesh))
                {
                    FitBoxToMesh();
                }
                needsUpdate |= EditorGUI.EndChangeCheck();

                EditorGUI.BeginChangeCheck();
                if (GUILayout.Button(Contents.fitCubeToMesh))
                {
                    FitCubeToMesh();
                }
                needsUpdate |= EditorGUI.EndChangeCheck();


                EditorGUILayout.EndHorizontal();
            }

            EditorGUI.BeginChangeCheck();
            modelSource = (ModelSource)EditorGUILayout.EnumPopup(Contents.bakeSource, modelSource);
            bool changedSource = EditorGUI.EndChangeCheck();

            needsUpdate |= changedSource;

            switch (modelSource)
            {
            case ModelSource.Mesh:
                EditorGUI.BeginChangeCheck();
                selectedMesh =
                    (Mesh)EditorGUILayout.ObjectField(Contents.mesh, selectedMesh, typeof(Mesh), false);
                bool meshFieldHasChanged = EditorGUI.EndChangeCheck();
                needsUpdate |= meshFieldHasChanged;

                m_RefreshMeshPreview |= meshFieldHasChanged | changedSource;
                if (m_RefreshMeshPreview)
                {
                    m_Settings.ApplySelectedMesh();
                }

                break;

            case ModelSource.MeshPrefab:
                EditorGUI.BeginChangeCheck();
                meshPrefab =
                    (GameObject)EditorGUILayout.ObjectField(Contents.meshPrefab, meshPrefab, typeof(GameObject),
                                                            false);

                meshFieldHasChanged = EditorGUI.EndChangeCheck() || m_PrefabChanged;
                m_PrefabChanged     = false;
                needsUpdate        |= meshFieldHasChanged;

                m_RefreshMeshPreview |= meshFieldHasChanged | changedSource || (mesh == null);
                bool rebuildMesh = m_RefreshMeshPreview;
                if (rebuildMesh)
                {
                    m_Settings.BuildMeshFromPrefab();
                    rebuildMesh = false;
                }

                break;
            }

            if (mesh == null)
            {
                m_LiveUpdate = false;
            }

            if (m_RefreshMeshPreview && mesh != null)
            {
                FitBoxToMesh();
                m_MeshPreview?.Dispose();
                m_MeshPreview        = new SdfBakerPreview(mesh);
                m_RefreshMeshPreview = false;
            }

            if (mesh == null || (estimatedGridSize > UnityEngine.VFX.SDF.MeshToSDFBaker.kMaxGridSize) || InternalMeshUtil.GetPrimitiveCount(mesh) == 0)
            {
                GUI.enabled = false;
            }

            if (GUILayout.Button("Bake mesh") || m_LiveUpdate && needsUpdate)
            {
                if (m_Baker == null)
                {
                    m_Baker = new MeshToSDFBaker(boxSizeReference, boxCenter, maxResolution, mesh, signPassesCount,
                                                 inOutThreshold, surfaceOffset);
                }
                else
                {
                    m_Baker.Reinit(boxSizeReference, boxCenter, maxResolution, mesh, signPassesCount,
                                   inOutThreshold, surfaceOffset);
                }

                m_Baker.BakeSDF();
                m_BakedSDF = m_Baker.SdfTexture;
            }

            GUI.enabled = true;


            bool canSave = true;

            if ((m_BakedSDF == null) || (m_Baker == null))
            {
                canSave     = false;
                GUI.enabled = false;
            }

            if (GUILayout.Button(canSave ? Contents.saveSDF : Contents.saveSDFBlocked))
            {
                m_Baker.SaveToAsset();
            }

            GUI.enabled = true;

            previewObject = (PreviewChoice)EditorGUILayout.EnumPopup(Contents.previewChoice, previewObject);
            if ((previewObject & PreviewChoice.Mesh) != 0)
            {
                UpdateMeshPreview();
            }

            if ((previewObject & PreviewChoice.Texture) != 0)
            {
                UpdateTexture3dPreview();
            }

            if (needsUpdate)
            {
                EditorUtility.SetDirty(m_Settings);
            }
        }
        public override void OnInspectorGUI()
        {
            AudioPlayerMusic myScript = (AudioPlayerMusic)target;

            List <string> options = new List <string>();

            System.Type enumType = null;
            if (!AudioManager.instance)
            {
                EditorGUILayout.HelpBox("Could not find Audio Manager in the scene! This component needs AudioManager " +
                                        "in order to function!", MessageType.Error);
            }
            else
            {
                enumType = AudioManager.instance.GetSceneMusicEnum();
                if (enumType == null)
                {
                    EditorGUILayout.HelpBox("Could not find Audio File info! Try regenerating Audio Files in AudioManager!", MessageType.Error);
                }
                else
                {
                    foreach (string s in System.Enum.GetNames(enumType))
                    {
                        options.Add(s);
                    }
                }
            }

            EditorGUILayout.LabelField("Specify Music to Play", EditorStyles.boldLabel);

            GUIContent musicDesc = new GUIContent("Music", "Music that will be played");

            int music = serializedObject.FindProperty("music").intValue;

            using (new EditorGUI.DisabledScope(myScript.GetAttachedFile() != null))
            {
                serializedObject.FindProperty("music").intValue = EditorGUILayout.Popup(musicDesc, music, options.ToArray());
            }

            GUIContent         fileText    = new GUIContent("Custom AudioClip", "Overrides the \"Music\" parameter with an AudioClip if not null");
            SerializedProperty customSound = serializedObject.FindProperty("musicFile");

            EditorGUILayout.Space();

            GUIContent fontent = new GUIContent("Custom AudioClip Settings", "These settings only apply if you input your own custom AudioClip rather than choosing from the generated Audio Library");

            if (myScript.GetAttachedFile() == null)
            {
                showAudioClipSettings = EditorGUILayout.Foldout(showAudioClipSettings, fontent);
            }
            else
            {
                showAudioClipSettings = EditorGUILayout.BeginFoldoutHeaderGroup(showAudioClipSettings, fontent);
            }
            if (showAudioClipSettings)
            {
                EditorGUILayout.ObjectField(customSound, fileText);
                using (new EditorGUI.DisabledScope(myScript.GetAttachedFile() == null))
                {
                    DrawPropertiesExcluding(serializedObject, new[] { "m_Script", "musicFile", "playOnStart", "playOnEnable",
                                                                      "stopOnDisable", "stopOnDestroy", "keepPlaybackPosition", "restartOnReplay", "musicFadeTime", "transitionMode" });
                }
            }
            if (myScript.GetAttachedFile() != null)
            {
                EditorGUILayout.EndFoldoutHeaderGroup();
            }

            EditorGUILayout.Space();

            GUIContent lontent = new GUIContent("Music Player Settings", "Modify settings specific to Audio Player Music");

            EditorGUILayout.LabelField(lontent, EditorStyles.boldLabel);
            EditorGUILayout.PropertyField(serializedObject.FindProperty("transitionMode"));
            if (myScript.GetTransitionMode() != TransitionMode.None)
            {
                EditorGUILayout.PropertyField(serializedObject.FindProperty("keepPlaybackPosition"));
                EditorGUILayout.PropertyField(serializedObject.FindProperty("musicFadeTime"));
            }
            EditorGUILayout.PropertyField(serializedObject.FindProperty("restartOnReplay"));

            EditorGUILayout.Space();

            EditorGUILayout.PropertyField(serializedObject.FindProperty("playOnStart"));
            EditorGUILayout.PropertyField(serializedObject.FindProperty("playOnEnable"));
            EditorGUILayout.PropertyField(serializedObject.FindProperty("stopOnDisable"));
            EditorGUILayout.PropertyField(serializedObject.FindProperty("stopOnDestroy"));

            serializedObject.ApplyModifiedProperties();

            EditorGUILayout.Space();

            #region Quick Reference Guide
            showHowTo = EditorGUILayout.BeginFoldoutHeaderGroup(showHowTo, "Quick Reference Guide");
            if (showHowTo)
            {
                EditorGUILayout.Space();

                EditorGUILayout.LabelField("Overview", EditorStyles.boldLabel);
                EditorGUILayout.HelpBox(
                    "This component allows you to easily play music anywhere in the scene."
                    , MessageType.None);
                EditorGUILayout.HelpBox(
                    "To get started, choose your music to play from the drop-down at the top. " +
                    "Make sure you've generated your Audio Libraries in your Audio Manager. "
                    , MessageType.None);

                EditorGUILayout.Space();

                EditorGUILayout.LabelField("Tips", EditorStyles.boldLabel);
                EditorGUILayout.HelpBox(
                    "Alternatively, you can specify to use your own AudioClip by filling in the AudioClip. " +
                    "You can then fill out the Custom AudioClip settings so the AudioPlayer plays your music to your liking."
                    , MessageType.None);
                //EditorGUILayout.HelpBox(
                //    "AudioPlayer includes a public function Play() that lets you play the sound in AudioPlayer on your own. " +
                //    "AudioPlayer's Play() function also returns the AudioSource to let you further modify the audio being played."
                //    , MessageType.None);
            }
            EditorGUILayout.Space();
            #endregion
        }
Exemple #20
0
    public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
    {
        try
        {
            EditorPersistantBoolVariable.Initialize(ref this.folded, EditorPersistantBoolVariable.BuildKeyFromObject(property.serializedObject.targetObject, property.name));

            Inline byEnumProperty = (Inline)attribute;
            EditorGUI.BeginChangeCheck();
            string propertyName = "";
            for (var i = 0; i < EditorGUI.indentLevel; i++)
            {
                propertyName += " ";
            }

            propertyName += property.name;

            this.folded.SetValue(EditorGUILayout.BeginFoldoutHeaderGroup(this.folded.GetValue(), propertyName));
            EditorGUILayout.EndFoldoutHeaderGroup();

            if (EditorGUI.EndChangeCheck())
            {
                if (!this.folded.GetValue())
                {
                    if (this.inlineEditor != null)
                    {
                        Editor.DestroyImmediate(inlineEditor);
                        this.inlineEditor = null;
                    }
                }
            }

            if (this.folded.GetValue())
            {
                EditorGUI.indentLevel += 1;
                EditorGUILayout.PropertyField(property);
                EditorGUI.indentLevel -= 1;

                if (property.propertyType == SerializedPropertyType.ObjectReference && property.objectReferenceValue != null)
                {
                    if (this.inlineEditor == null)
                    {
                        inlineEditor = DynamicEditorCreation.Get().CreateEditor(property.objectReferenceValue);
                    }

                    if (this.inlineEditor != null)
                    {
                        EditorGUI.indentLevel += 1;
                        this.inlineEditor.OnInspectorGUI();
                        EditorGUI.indentLevel -= 1;
                    }
                }
                else
                {
                    if (EditorUtility.IsPersistent(property.serializedObject.targetObject))
                    {
                        if (byEnumProperty.CreateAtSameLevelIfAbsent)
                        {
                            if (GUILayout.Button(new GUIContent("CREATE")))
                            {
                                var fieldType = SerializableObjectHelper.GetPropertyFieldInfo(property).FieldType;
                                if (fieldType.IsAbstract || fieldType.IsInterface)
                                {
                                    //Open popup to select implementation
                                    ClassSelectionEditorWindow.Show(Event.current.mousePosition, fieldType, (Type selectedType) =>
                                    {
                                        var createdAsset = AssetHelper.CreateAssetAtSameDirectoryLevel((ScriptableObject)property.serializedObject.targetObject, selectedType.Name, property.name);
                                        property.objectReferenceValue = (Object)createdAsset;
                                    });
                                }
                                else
                                {
                                    var createdAsset = AssetHelper.CreateAssetAtSameDirectoryLevel((ScriptableObject)property.serializedObject.targetObject, property.type.Replace("PPtr<$", "").Replace(">", ""), property.name);
                                    property.objectReferenceValue = (Object)createdAsset;
                                }
                            }
                        }
                    }
                }
            }
        }
        catch (Exception e)
        {
        }
    }
    public override void OnInspectorGUI()
    {
        serializedObject.Update();
        var lastSceneName      = string.Empty;
        var fieldLayoutOptions = new GUILayoutOption[]
        {
            GUILayout.Width(120f)
        };

        EditorGUILayout.BeginHorizontal();
        GUILayout.Space(40);

        EditorGUILayout.LabelField(new GUIContent("Scenes", "The scene to apply this filter to"), GUILayout.Width(180));
        EditorGUILayout.LabelField(new GUIContent("Reason", "The reason this config is filtered"), fieldLayoutOptions);
        EditorGUILayout.LabelField(new GUIContent("Color Space", "Color space to filter, Unitialized will filter all color spaces."), fieldLayoutOptions);
        EditorGUILayout.LabelField(new GUIContent("Platform", "The build platform to filter, No Target will filter all platforms."), fieldLayoutOptions);
        EditorGUILayout.LabelField(new GUIContent("Graphics API", "The graphics api to filter, Null filters all apis."), fieldLayoutOptions);
        EditorGUILayout.LabelField(new GUIContent("XR SDK", "Which XR platform to filter, use the same string as found in the VR SDK options.  Blank will filter all (including non-xr configs) and None will filter only non-vr configs."), fieldLayoutOptions);
        EditorGUILayout.LabelField(new GUIContent("Stereo Rendering Mode", "Stereo rendering mode to filter, mp for Multi Pass, sp for Single Pass and spi for Instancing."), GUILayout.MinWidth(120));

        EditorGUILayout.EndHorizontal();

        for (int i = 0; i < filters.arraySize; i++)
        {
            var filterElement = filters.GetArrayElementAtIndex(i);

            var scene         = filterElement.FindPropertyRelative("FilteredScene");
            var scenes        = filterElement.FindPropertyRelative("FilteredScenes");
            var colorSpace    = filterElement.FindPropertyRelative("ColorSpace");
            var buildPlatform = filterElement.FindPropertyRelative("BuildPlatform");
            var graphicsType  = filterElement.FindPropertyRelative("GraphicsDevice");
            var xrsdk         = filterElement.FindPropertyRelative("XrSdk");
            var stereoModes   = filterElement.FindPropertyRelative("StereoModes");
            var reason        = filterElement.FindPropertyRelative("Reason");

            EditorGUILayout.BeginHorizontal();
            if (GUILayout.Button("del", GUILayout.Width(40)))
            {
                filters.DeleteArrayElementAtIndex(i);
                continue;
            }

            // This is here to convert old test filters which did not have the scenes in
            // an array to be converted to the new data structure.
            if (scene.objectReferenceValue != null)
            {
                scenes.arraySize += 1;
                scenes.FindPropertyRelative(
                    "Array.data[" + (scenes.arraySize - 1) + "]").objectReferenceValue = scene.objectReferenceValue;
                scene.objectReferenceValue = null;
            }

            EditorGUILayout.PropertyField(scenes.FindPropertyRelative("Array.size"), GUIContent.none, GUILayout.Width(40));

            if (scenes.arraySize > 1)
            {
                // This little space is needed so the foldout carrot doesn't overlap the previous field.
                GUILayout.Space(10);

                EditorGUILayout.BeginVertical(GUILayout.Width(110));

                EditorGUILayout.BeginFoldoutHeaderGroup(true, "Filtered Scenes");

                for (int j = 0; j < scenes.arraySize; j++)
                {
                    var singleScene = scenes.FindPropertyRelative(string.Format("Array.data[{0}]", j));
                    EditorGUILayout.PropertyField(singleScene, GUIContent.none, GUILayout.Width(110));
                }

                EditorGUILayout.EndVertical();
                EditorGUILayout.EndFoldoutHeaderGroup();
            }
            else if (scenes.arraySize == 1)
            {
                var singleScene = scenes.FindPropertyRelative("Array.data[0]");
                EditorGUILayout.PropertyField(singleScene, GUIContent.none, fieldLayoutOptions);
            }

            EditorGUILayout.PropertyField(reason, GUIContent.none, fieldLayoutOptions);
            EditorGUILayout.PropertyField(colorSpace, GUIContent.none, fieldLayoutOptions);
            EditorGUILayout.PropertyField(buildPlatform, GUIContent.none, fieldLayoutOptions);
            EditorGUILayout.PropertyField(graphicsType, GUIContent.none, fieldLayoutOptions);
            EditorGUILayout.PropertyField(xrsdk, GUIContent.none, fieldLayoutOptions);

            if (EditorGUILayout.ToggleLeft("mp",
                                           ((StereoRenderingModeFlags)stereoModes.intValue & StereoRenderingModeFlags.MultiPass) == StereoRenderingModeFlags.MultiPass,
                                           GUILayout.MaxWidth(40)))
            {
                stereoModes.intValue |= (int)StereoRenderingModeFlags.MultiPass;
            }
            else
            {
                stereoModes.intValue &= ~(int)StereoRenderingModeFlags.MultiPass;
            }

            if (EditorGUILayout.ToggleLeft("sp",
                                           ((StereoRenderingModeFlags)stereoModes.intValue & StereoRenderingModeFlags.SinglePass) == StereoRenderingModeFlags.SinglePass,
                                           GUILayout.MaxWidth(40)))
            {
                stereoModes.intValue |= (int)StereoRenderingModeFlags.SinglePass;
            }
            else
            {
                stereoModes.intValue &= ~(int)StereoRenderingModeFlags.SinglePass;
            }

            if (EditorGUILayout.ToggleLeft("spi",
                                           ((StereoRenderingModeFlags)stereoModes.intValue & StereoRenderingModeFlags.Instancing) == StereoRenderingModeFlags.Instancing,
                                           GUILayout.MaxWidth(40)))
            {
                stereoModes.intValue |= (int)StereoRenderingModeFlags.Instancing;
            }
            else
            {
                stereoModes.intValue &= ~(int)StereoRenderingModeFlags.Instancing;
            }

            EditorGUILayout.EndHorizontal();
        }

        if (GUILayout.Button(new GUIContent("New Filter", "Add new filter")))
        {
            filters.arraySize += 1;
            var lastFilter = filters.GetArrayElementAtIndex(filters.arraySize - 1);

            lastFilter.serializedObject.FindProperty("filters.Array.data[" + (filters.arraySize - 1) + "]." +
                                                     "FilteredScenes").arraySize = 1;

            lastFilter.serializedObject.FindProperty("filters.Array.data[" + (filters.arraySize - 1) + "]." +
                                                     "FilteredScenes").GetArrayElementAtIndex(0).objectReferenceValue = null;

            lastFilter.serializedObject.FindProperty("filters.Array.data[" + (filters.arraySize - 1) + "]." +
                                                     "Reason").stringValue = "";

            lastFilter.serializedObject.FindProperty("filters.Array.data[" + (filters.arraySize - 1) + "]." +
                                                     "XrSdk").stringValue = "";

            lastFilter.serializedObject.FindProperty("filters.Array.data[" + (filters.arraySize - 1) + "]." +
                                                     "ColorSpace").intValue = (int)ColorSpace.Uninitialized;

            lastFilter.serializedObject.FindProperty("filters.Array.data[" + (filters.arraySize - 1) + "]." +
                                                     "BuildPlatform").intValue = (int)BuildTarget.NoTarget;

            lastFilter.serializedObject.FindProperty("filters.Array.data[" + (filters.arraySize - 1) + "]." +
                                                     "GraphicsDevice").intValue = (int)GraphicsDeviceType.Null;

            lastFilter.serializedObject.FindProperty("filters.Array.data[" + (filters.arraySize - 1) + "]." +
                                                     "StereoModes").intValue = (int)StereoRenderingModeFlags.None;
        }

        serializedObject.ApplyModifiedProperties();

        if (GUILayout.Button(new GUIContent("Sort", "Sort filters by scene name.")))
        {
            var filterObjectPath = AssetDatabase.GetAssetPath(target.GetInstanceID());
            var filterObject     = AssetDatabase.LoadAssetAtPath <TestFilters>(filterObjectPath);
            filterObject.SortBySceneName();
            EditorUtility.SetDirty(filterObject);
            AssetDatabase.SaveAssets();
        }
    }
Exemple #22
0
            public override void OnInspectorGUI()
            {
                ButtonIconSet bis = (ButtonIconSet)target;

                bool showQuadIconFoldout   = SessionState.GetBool(ShowQuadIconsFoldoutKey, false);
                bool showSpriteIconFoldout = SessionState.GetBool(ShowSpriteIconsFoldoutKey, false);
                bool showCharIconFoldout   = SessionState.GetBool(ShowCharIconsFoldoutKey, false);
                bool showAvailableIcons    = SessionState.GetBool(AvailableIconsFoldoutKey, true);
                bool showSelectedIcons     = SessionState.GetBool(SelectedIconsFoldoutKey, true);

#if UNITY_2019_3_OR_NEWER
                showQuadIconFoldout = EditorGUILayout.BeginFoldoutHeaderGroup(showQuadIconFoldout, "Quad Icons");
#else
                showQuadIconFoldout = EditorGUILayout.Foldout(showQuadIconFoldout, "Quad Icons");
#endif
                if (showQuadIconFoldout)
                {
                    using (new EditorGUI.IndentLevelScope(1))
                    {
                        quadIconsProp.isExpanded = true;
                        EditorGUILayout.PropertyField(quadIconsProp, true);
                    }
                }
#if UNITY_2019_3_OR_NEWER
                EditorGUILayout.EndFoldoutHeaderGroup();
#endif

#if UNITY_2019_3_OR_NEWER
                showSpriteIconFoldout = EditorGUILayout.BeginFoldoutHeaderGroup(showSpriteIconFoldout, "Sprite Icons");
#else
                showSpriteIconFoldout = EditorGUILayout.Foldout(showSpriteIconFoldout, "Sprite Icons");
#endif
                if (showSpriteIconFoldout)
                {
                    using (new EditorGUI.IndentLevelScope(1))
                    {
                        spriteIconsProp.isExpanded = true;
                        EditorGUILayout.PropertyField(spriteIconsProp, true);
                    }
                }
#if UNITY_2019_3_OR_NEWER
                EditorGUILayout.EndFoldoutHeaderGroup();
#endif

#if UNITY_2019_3_OR_NEWER
                showCharIconFoldout = EditorGUILayout.BeginFoldoutHeaderGroup(showCharIconFoldout, "Font Icons");
#else
                showCharIconFoldout = EditorGUILayout.Foldout(showCharIconFoldout, "Font Icons");
#endif


#if UNITY_2019_3_OR_NEWER
                EditorGUILayout.EndFoldoutHeaderGroup();
#endif

                if (showCharIconFoldout)
                {
                    EditorGUILayout.PropertyField(charIconFontProp);

                    if (charIconFontProp.objectReferenceValue == null)
                    {
                        EditorGUILayout.HelpBox(noIconFontMessage, MessageType.Warning);
                        if (!CheckIfHololensIconFontExists())
                        {
                            EditorGUILayout.HelpBox(downloadIconFontMessage, MessageType.Info);
                            if (GUILayout.Button("View Button Documentation"))
                            {
                                EditorApplication.ExecuteMenuItem(textMeshProMenuItem);
                                Application.OpenURL(hololensIconFontUrl);
                            }
                        }
                    }
                    else
                    {
                        TMP_FontAsset fontAsset = (TMP_FontAsset)charIconFontProp.objectReferenceValue;

#if UNITY_2019_3_OR_NEWER
                        showAvailableIcons = EditorGUILayout.BeginFoldoutHeaderGroup(showAvailableIcons, "Available Icons");
#else
                        showAvailableIcons = EditorGUILayout.Foldout(showAvailableIcons, "Available Icons");
#endif

                        if (showAvailableIcons)
                        {
                            if (fontAsset.characterTable.Count == 0)
                            {
                                EditorGUILayout.HelpBox("No icons are available in this font. The font may be configured incorrectly.", MessageType.Warning);
                                if (GUILayout.Button("Open Font Editor"))
                                {
                                    Selection.activeObject = bis.CharIconFont;
                                }
                            }
                            else
                            {
                                EditorGUILayout.HelpBox("Click an icon to add it to your selected icons.", MessageType.Info);
                                if (GUILayout.Button("Open Font Editor"))
                                {
                                    Selection.activeObject = bis.CharIconFont;
                                }

                                int removeIndex = -1;
                                int addIndex    = -1;
                                int column      = 0;

                                column = 0;
                                EditorGUILayout.BeginHorizontal();
                                for (int i = 0; i < fontAsset.characterTable.Count; i++)
                                {
                                    if (column >= maxButtonsPerColumn)
                                    {
                                        column = 0;
                                        EditorGUILayout.EndHorizontal();
                                        EditorGUILayout.BeginHorizontal();
                                    }
                                    if (GUILayout.Button(" ",
                                                         GUILayout.MinHeight(maxButtonSize),
                                                         GUILayout.MaxHeight(maxButtonSize),
                                                         GUILayout.MaxWidth(maxButtonSize)))
                                    {
                                        addIndex = i;
                                    }
                                    Rect textureRect = GUILayoutUtility.GetLastRect();
                                    EditorDrawTMPGlyph(textureRect, fontAsset, fontAsset.characterTable[i]);
                                    column++;
                                }

                                if (column > 0)
                                {
                                    EditorGUILayout.EndHorizontal();
                                }

                                if (removeIndex >= 0)
                                {
                                    List <CharIcon> charIconsSet = new List <CharIcon>(bis.charIcons);
                                    charIconsSet.RemoveAt(removeIndex);
                                    bis.charIcons = charIconsSet.ToArray();
                                    EditorUtility.SetDirty(target);
                                }

                                if (addIndex >= 0)
                                {
                                    uint unicode             = fontAsset.characterTable[addIndex].unicode;
                                    bool alreadyContainsIcon = false;
                                    foreach (CharIcon c in bis.charIcons)
                                    {
                                        if (c.Character == unicode)
                                        {
                                            alreadyContainsIcon = true;
                                            break;
                                        }
                                    }

                                    if (!alreadyContainsIcon)
                                    {
                                        charIconsProp.InsertArrayElementAtIndex(charIconsProp.arraySize);

                                        SerializedProperty newIconProp = charIconsProp.GetArrayElementAtIndex(charIconsProp.arraySize - 1);
                                        SerializedProperty charProp    = newIconProp.FindPropertyRelative("Character");
                                        SerializedProperty nameProp    = newIconProp.FindPropertyRelative("Name");

                                        charProp.intValue    = (int)unicode;
                                        nameProp.stringValue = "Icon " + charIconsProp.arraySize.ToString();

                                        serializedObject.ApplyModifiedProperties();
                                    }
                                }
                            }
                            EditorGUILayout.Space();
                        }
#if UNITY_2019_3_OR_NEWER
                        EditorGUILayout.EndFoldoutHeaderGroup();
                        showSelectedIcons = EditorGUILayout.BeginFoldoutHeaderGroup(showSelectedIcons, "Selected Icons");
#else
                        showSelectedIcons = EditorGUILayout.Foldout(showSelectedIcons, "Selected Icons");
#endif

                        if (showSelectedIcons)
                        {
                            int removeIndex = -1;

                            if (charIconsProp.arraySize > 0)
                            {
                                EditorGUILayout.HelpBox("These icons will appear in the button config helper inspector. Click an icon to remove it from this list.", MessageType.Info);

                                using (new EditorGUILayout.VerticalScope())
                                {
                                    for (int i = 0; i < charIconsProp.arraySize; i++)
                                    {
                                        SerializedProperty charIconNameprop = charIconsProp.GetArrayElementAtIndex(i).FindPropertyRelative("Name");

                                        using (new EditorGUILayout.HorizontalScope())
                                        {
                                            if (GUILayout.Button(" ", GUILayout.MinHeight(maxButtonSize), GUILayout.MaxHeight(maxButtonSize)))
                                            {
                                                removeIndex = i;
                                            }
                                            Rect textureRect = GUILayoutUtility.GetLastRect();
                                            EditorDrawTMPGlyph(textureRect, bis.charIcons[i].Character, fontAsset);
                                            charIconNameprop.stringValue = EditorGUILayout.TextField(charIconNameprop.stringValue);
                                            EditorGUILayout.Space();
                                        }

                                        EditorGUILayout.Space();
                                    }
                                }
                            }
                            else
                            {
                                EditorGUILayout.HelpBox("No icons added yet. Click avaialable icons to add.", MessageType.Info);
                            }

                            if (removeIndex >= 0)
                            {
                                charIconsProp.DeleteArrayElementAtIndex(removeIndex);
                            }
                        }

#if UNITY_2019_3_OR_NEWER
                        EditorGUILayout.EndFoldoutHeaderGroup();
#endif
                    }
                }

                SessionState.SetBool(ShowQuadIconsFoldoutKey, showQuadIconFoldout);
                SessionState.SetBool(ShowSpriteIconsFoldoutKey, showSpriteIconFoldout);
                SessionState.SetBool(ShowCharIconsFoldoutKey, showCharIconFoldout);
                SessionState.SetBool(AvailableIconsFoldoutKey, showAvailableIcons);
                SessionState.SetBool(SelectedIconsFoldoutKey, showSelectedIcons);

                serializedObject.ApplyModifiedProperties();
            }
Exemple #23
0
    public override void OnInspectorGUI()
    {
        serializedObject.Update();

        EditorGUILayout.PropertyField(m_SpawnSoundProp);

        for (int i = 0; i < m_SpawnEventProp.arraySize; ++i)
        {
            var i1 = i;
            m_FoldoutInfos[i] = EditorGUILayout.BeginFoldoutHeaderGroup(m_FoldoutInfos[i], $"Slot {i}", null, (rect) => { ShowHeaderContextMenu(rect, i1); });

            if (m_FoldoutInfos[i])
            {
                var entriesArrayProp = m_SpawnEventProp.GetArrayElementAtIndex(i).FindPropertyRelative("Entries");

                int localToDelete = -1;

                EditorGUILayout.BeginHorizontal();
                GUILayout.Label("Item");
                GUILayout.Label("Weight");
                GUILayout.Space(16);
                EditorGUILayout.EndHorizontal();

                for (int j = 0; j < entriesArrayProp.arraySize; ++j)
                {
                    var entryProp = entriesArrayProp.GetArrayElementAtIndex(j);

                    var itemProp   = entryProp.FindPropertyRelative("Item");
                    var weightProp = entryProp.FindPropertyRelative("Weight");

                    EditorGUILayout.BeginHorizontal();
                    EditorGUILayout.PropertyField(itemProp, GUIContent.none);
                    EditorGUILayout.PropertyField(weightProp, GUIContent.none);
                    if (GUILayout.Button("-", GUILayout.Width(16)))
                    {
                        localToDelete = j;
                    }
                    EditorGUILayout.EndHorizontal();
                }

                if (localToDelete != -1)
                {
                    entriesArrayProp.DeleteArrayElementAtIndex(localToDelete);
                }

                if (GUILayout.Button("Add New Entry", GUILayout.Width(100)))
                {
                    entriesArrayProp.InsertArrayElementAtIndex(entriesArrayProp.arraySize);
                }
            }

            EditorGUILayout.EndFoldoutHeaderGroup();
        }

        if (toDelete != -1)
        {
            m_SpawnEventProp.DeleteArrayElementAtIndex(toDelete);
            ArrayUtility.RemoveAt(ref m_FoldoutInfos, toDelete);
            toDelete = -1;
        }

        if (GUILayout.Button("Add new Slot"))
        {
            m_SpawnEventProp.InsertArrayElementAtIndex(m_SpawnEventProp.arraySize);
            serializedObject.ApplyModifiedProperties();

            //insert will copy the last element, which can lead to having to empty a large spawn event to start new
            //so we manually "empty" the new event
            var newElem = m_SpawnEventProp.GetArrayElementAtIndex(m_SpawnEventProp.arraySize - 1);
            var entries = newElem.FindPropertyRelative("Entries");

            entries.ClearArray();

            ArrayUtility.Add(ref m_FoldoutInfos, false);
        }

        serializedObject.ApplyModifiedProperties();
    }
Exemple #24
0
    public override void OnInspectorGUI()
    {
        //bool to show/hide the custom bit
        custom = EditorGUILayout.ToggleLeft("Custom Inspector", custom);
        if (custom)
        {
            //The players entry
            EditorGUILayout.Space();
            EditorGUILayout.LabelField("Player entry:");
            EditorGUILayout.BeginHorizontal();
            scr.playerEntry.Name  = EditorGUILayout.TextField(scr.playerEntry.Name);
            scr.playerEntry.Score = EditorGUILayout.FloatField(scr.playerEntry.Score);
            EditorGUILayout.EndHorizontal();
            //Button that sends the current entry to the leaderboard
            if (GUILayout.Button("Write Entry"))
            {
                scr.WriteToLeaderboard(scr.playerEntry);
            }
            //Showing the highscore
            if (scr.playerHigh != null)
            {
                EditorGUILayout.BeginHorizontal();
                EditorGUILayout.LabelField("Highscore:", GUILayout.Width(125));
                EditorGUILayout.LabelField(scr.playerHigh.Name, GUILayout.Width(125));
                EditorGUILayout.LabelField(scr.playerHigh.Score.ToString(), GUILayout.Width(125));
                EditorGUILayout.EndHorizontal();
            }

            EditorGUILayout.Space();

            GUILayout.BeginHorizontal();
            setName = EditorGUILayout.TextField(setName, GUILayout.Width(200));
            if (GUILayout.Button("Create Leaderboard"))
            {
                scr.AddLeaderboard(setName);
            }
            GUILayout.EndHorizontal();

            for (int i = 0; i < scr.Leaderboards.Count; i++)
            {
                LeaderboardGroup lbg = scr.Leaderboards[i];
                GUILayout.BeginHorizontal();
                lbg.Show = EditorGUILayout.BeginFoldoutHeaderGroup(lbg.Show, lbg.Name);
                if (GUILayout.Button("Remove Leaderboard", GUILayout.Width(175)))
                {
                    scr.RemoveLeaderboard(lbg);
                }
                GUILayout.EndHorizontal();
                if (lbg.Show)
                {
                    EditorGUI.indentLevel = 1;
                    lbg.Name = EditorGUILayout.TextField("Name:", lbg.Name);
                    EditorGUILayout.Space();
                    //showing the closest in alltime
                    if (lbg.closestOverall != null)
                    {
                        EditorGUILayout.BeginHorizontal();
                        EditorGUILayout.LabelField("Closest Overall:", GUILayout.Width(125));
                        EditorGUILayout.LabelField(lbg.closestOverall.Name, GUILayout.Width(125));
                        EditorGUILayout.LabelField(lbg.closestOverall.Score.ToString(), GUILayout.Width(125));
                        EditorGUILayout.EndHorizontal();
                    }
                    //showing the closest in alltime
                    if (lbg.closestAllTime != null)
                    {
                        EditorGUILayout.BeginHorizontal();
                        EditorGUILayout.LabelField("Closest Alltime:", GUILayout.Width(125));
                        EditorGUILayout.LabelField(lbg.closestAllTime.Name, GUILayout.Width(125));
                        EditorGUILayout.LabelField(lbg.closestAllTime.Score.ToString(), GUILayout.Width(125));
                        EditorGUILayout.EndHorizontal();
                    }
                    //showing the closest in weekly
                    if (lbg.closestWeekly != null)
                    {
                        EditorGUILayout.BeginHorizontal();
                        EditorGUILayout.LabelField("Closest Weekly:", GUILayout.Width(125));
                        EditorGUILayout.LabelField(lbg.closestWeekly.Name, GUILayout.Width(125));
                        EditorGUILayout.LabelField(lbg.closestWeekly.Score.ToString(), GUILayout.Width(125));
                        EditorGUILayout.EndHorizontal();
                    }
                    //showing the closest in daily
                    if (lbg.closestDaily != null)
                    {
                        EditorGUILayout.BeginHorizontal();
                        EditorGUILayout.LabelField("Closest Daily:", GUILayout.Width(125));
                        EditorGUILayout.LabelField(lbg.closestDaily.Name, GUILayout.Width(125));
                        EditorGUILayout.LabelField(lbg.closestDaily.Score.ToString(), GUILayout.Width(125));
                        EditorGUILayout.EndHorizontal();
                    }
                    EditorGUILayout.Space();
                    //Separating based on if the game is playing, to hide the settings you're not allowed to touch
                    if (!Application.isPlaying)
                    {
                        //Toggeling the leaderboards and showing their specific settings
                        lbg.EnableAllTime = EditorGUILayout.Toggle("Enable AllTime Leaderboard", lbg.EnableAllTime);
                        if (lbg.EnableAllTime)
                        {
                            EditorGUI.indentLevel = 1;
                            lbg.AllTime.Limit     = EditorGUILayout.IntField("Alltime limit", lbg.AllTime.Limit);
                            EditorGUI.indentLevel = 0;
                        }
                        lbg.EnableWeekly = EditorGUILayout.Toggle("Enable Weekly Leaderboard", lbg.EnableWeekly);
                        if (lbg.EnableWeekly)
                        {
                            EditorGUI.indentLevel = 1;
                            lbg.Weekly.Limit      = EditorGUILayout.IntField("Weekly limit", lbg.Weekly.Limit);
                            EditorGUI.indentLevel = 0;
                        }
                        lbg.EnableDaily = EditorGUILayout.Toggle("Enable Daily Leaderboard", lbg.EnableDaily);
                        if (lbg.EnableDaily)
                        {
                            EditorGUI.indentLevel = 1;
                            lbg.Daily.Limit       = EditorGUILayout.IntField("Daily limit", lbg.Daily.Limit);
                            EditorGUI.indentLevel = 0;
                        }
                    }
                    else
                    {
                        //checking if leaderboard is enabled
                        if (lbg.EnableAllTime)
                        {
                            //Basic foldout to allow you to hide it
                            lbg.ShowAllTime = EditorGUILayout.Foldout(lbg.ShowAllTime, "AllTime Leaderboard");
                            if (lbg.ShowAllTime)
                            {
                                //indent the leaderboard, cause fancy
                                EditorGUI.indentLevel = 1;

                                //The signifier part,
                                EditorGUILayout.BeginHorizontal();
                                EditorGUILayout.LabelField("nr.", GUILayout.Width(30));
                                EditorGUILayout.LabelField("Name:", GUILayout.Width(150));
                                EditorGUILayout.LabelField("Score:", GUILayout.Width(150));
                                EditorGUILayout.EndHorizontal();
                                //Scrollarea setup
                                lbg.allScrollPos = EditorGUILayout.BeginScrollView(lbg.allScrollPos, false, false, GUILayout.Height(Mathf.Clamp(21 * lbg.AllTime.Limit, 0, 300)), GUILayout.Width(330));
                                //going through all leaderboard entries and displaying them
                                for (int k = 0; k < lbg.AllTime.board.Count; k++)
                                {
                                    //making the current players highscore green
                                    if (scr.playerEntry.ID == lbg.AllTime.board[k].ID)
                                    {
                                        GUI.contentColor = Color.green;
                                    }
                                    //horizontaly displaying the entry
                                    EditorGUILayout.BeginHorizontal();
                                    EditorGUILayout.LabelField((k + 1).ToString() + ".", GUILayout.Width(50));
                                    EditorGUILayout.LabelField(lbg.AllTime.board[k].Name, GUILayout.Width(125));
                                    EditorGUILayout.LabelField(lbg.AllTime.board[k].Score.ToString(), GUILayout.Width(125));
                                    EditorGUILayout.EndHorizontal();
                                    //stop being green
                                    GUI.contentColor = Color.white;
                                }
                                //scrollarea end
                                EditorGUILayout.EndScrollView();
                                //stop indent
                                EditorGUI.indentLevel = 0;
                            }
                            EditorGUILayout.EndFoldoutHeaderGroup();
                        }
                        //same as above, not commenting the samey stuff
                        if (lbg.EnableWeekly)
                        {
                            lbg.ShowWeekly = EditorGUILayout.Foldout(lbg.ShowWeekly, "Weekly Leaderboard");
                            if (lbg.ShowWeekly)
                            {
                                EditorGUI.indentLevel = 1;
                                EditorGUILayout.BeginHorizontal();
                                EditorGUILayout.LabelField("nr.", GUILayout.Width(50));
                                EditorGUILayout.LabelField("Name:", GUILayout.Width(125));
                                EditorGUILayout.LabelField("Score:", GUILayout.Width(125));
                                EditorGUILayout.EndHorizontal();

                                lbg.WeekScrollPos = EditorGUILayout.BeginScrollView(lbg.WeekScrollPos, false, false, GUILayout.Height(Mathf.Clamp(21 * lbg.Weekly.Limit, 0, 300)), GUILayout.Width(330));
                                for (int k = 0; k < lbg.Weekly.board.Count; k++)
                                {
                                    if (scr.playerEntry.ID == lbg.Weekly.board[k].ID)
                                    {
                                        GUI.contentColor = Color.green;
                                    }
                                    EditorGUILayout.BeginHorizontal();
                                    EditorGUILayout.LabelField((k + 1).ToString() + ".", GUILayout.Width(50));
                                    EditorGUILayout.LabelField(lbg.Weekly.board[k].Name, GUILayout.Width(125));
                                    EditorGUILayout.LabelField(lbg.Weekly.board[k].Score.ToString(), GUILayout.Width(125));
                                    EditorGUILayout.EndHorizontal();
                                    GUI.contentColor = Color.white;
                                }
                                EditorGUILayout.EndScrollView();
                                EditorGUI.indentLevel = 0;
                            }
                            EditorGUILayout.EndFoldoutHeaderGroup();
                        }
                        //same as above, not commenting the samey stuff
                        if (lbg.EnableDaily)
                        {
                            lbg.ShowDaily = EditorGUILayout.Foldout(lbg.ShowDaily, "Daily Leaderboard");
                            if (lbg.ShowDaily)
                            {
                                EditorGUI.indentLevel = 1;
                                EditorGUILayout.BeginHorizontal();
                                EditorGUILayout.LabelField("nr.", GUILayout.Width(50));
                                EditorGUILayout.LabelField("Name:", GUILayout.Width(125));
                                EditorGUILayout.LabelField("Score:", GUILayout.Width(125));
                                EditorGUILayout.EndHorizontal();
                                lbg.dayScrollPos = EditorGUILayout.BeginScrollView(lbg.dayScrollPos, false, false, GUILayout.Height(Mathf.Clamp(21 * lbg.Daily.Limit, 0, 300)), GUILayout.Width(330));
                                for (int k = 0; k < lbg.Daily.board.Count; k++)
                                {
                                    if (scr.playerEntry.ID == lbg.Daily.board[k].ID)
                                    {
                                        GUI.contentColor = Color.green;
                                    }
                                    EditorGUILayout.BeginHorizontal();
                                    EditorGUILayout.LabelField((k + 1).ToString() + ".", GUILayout.Width(50));
                                    EditorGUILayout.LabelField(lbg.Daily.board[k].Name, GUILayout.Width(125));
                                    EditorGUILayout.LabelField(lbg.Daily.board[k].Score.ToString(), GUILayout.Width(125));
                                    EditorGUILayout.EndHorizontal();
                                    GUI.contentColor = Color.white;
                                }
                                EditorGUILayout.EndScrollView();
                                EditorGUI.indentLevel = 0;
                            }
                            EditorGUILayout.EndFoldoutHeaderGroup();
                        }
                    }

                    EditorGUI.indentLevel = 0;
                }
                EditorGUILayout.EndFoldoutHeaderGroup();
            }
            if (!Application.isPlaying)
            {
                EditorGUILayout.Space();
                //The settings foldout, serves to have them separated and hidden when they're not in use
                settings = EditorGUILayout.BeginFoldoutHeaderGroup(settings, "Settings:");
                if (settings)
                {
                    EditorGUI.indentLevel = 1;
                    EditorGUILayout.HelpBox("Only change these if the leaderboards are empty", MessageType.Info);
                    scr.ReverseScore       = EditorGUILayout.Toggle("Reverse boards", scr.ReverseScore);
                    scr.IncludeProductName = EditorGUILayout.Toggle("Include Name", scr.IncludeProductName);
                    scr.IncludeVersion     = EditorGUILayout.Toggle("Include version", scr.IncludeVersion);
                    scr.databaseUrl        = EditorGUILayout.TextField("Database Url", scr.databaseUrl);
                    EditorGUI.indentLevel  = 0;
                }
                EditorGUILayout.EndFoldoutHeaderGroup();
            }
        }
        else
        {
            //Show the base if it's not in custom mode
            EditorGUILayout.Space();
            base.OnInspectorGUI();
        }
        //Mark any changes for saving
        if (GUI.changed)
        {
            EditorUtility.SetDirty(scr);
        }
    }
        public override void OnInspectorGUI()
        {
            base.OnPreInspectorGUI();

            if (_foldoutColorsAndFormatting = EditorGUILayout.BeginFoldoutHeaderGroup(_foldoutColorsAndFormatting, "Colors & Formatting"))
            {
                DropDownField("Type", ref _ramp.data.RampType, _rampTypeStrings, _rampTypeValues);
                TextureField("Image", ref _ramp.data.Image);
                MaterialField("Material", ref _ramp.data.Material);
                DropDownField("Image Mode", ref _ramp.data.ImageAlignment, _rampImageAlignmentStrings, _rampImageAlignmentValues);
                ItemDataField("Apply Image To Wall", ref _ramp.data.ImageWalls);
                ItemDataField("Visible", ref _ramp.data.IsVisible);
                ItemDataField("Depth Bias", ref _ramp.data.DepthBias);
            }
            EditorGUILayout.EndFoldoutHeaderGroup();

            if (_foldoutPosition = EditorGUILayout.BeginFoldoutHeaderGroup(_foldoutPosition, "Position"))
            {
                ItemDataField("Top Height", ref _ramp.data.HeightTop);
                ItemDataField("Bottom Height", ref _ramp.data.HeightBottom);

                EditorGUILayout.Space(10);
                ItemDataField("Top Width", ref _ramp.data.WidthTop);
                ItemDataField("Bottom Width", ref _ramp.data.WidthBottom);

                EditorGUILayout.Space(10);
                EditorGUILayout.LabelField("Visible Wall");
                EditorGUI.indentLevel++;
                ItemDataField("Left Wall", ref _ramp.data.LeftWallHeightVisible);
                ItemDataField("Right Wall", ref _ramp.data.RightWallHeightVisible);
                EditorGUI.indentLevel--;
                EditorGUILayout.LabelField("Wire Ramp");
                EditorGUI.indentLevel++;
                ItemDataField("Diameter", ref _ramp.data.WireDiameter);
                ItemDataField("Distance X", ref _ramp.data.WireDistanceX);
                ItemDataField("Distance Y", ref _ramp.data.WireDistanceY);
                EditorGUI.indentLevel--;
            }
            EditorGUILayout.EndFoldoutHeaderGroup();

            if (_foldoutPhysics = EditorGUILayout.BeginFoldoutHeaderGroup(_foldoutPhysics, "Physics"))
            {
                ItemDataField("Has Hit Event", ref _ramp.data.HitEvent, dirtyMesh: false);
                ItemDataField("Hit Threshold", ref _ramp.data.Threshold, dirtyMesh: false);

                EditorGUILayout.LabelField("Physical Wall");
                EditorGUI.indentLevel++;
                ItemDataField("Left Wall", ref _ramp.data.LeftWallHeight);
                ItemDataField("Right Wall", ref _ramp.data.RightWallHeight);
                EditorGUI.indentLevel--;

                EditorGUI.BeginDisabledGroup(_ramp.data.OverwritePhysics);
                MaterialField("Physics Material", ref _ramp.data.PhysicsMaterial, dirtyMesh: false);
                EditorGUI.EndDisabledGroup();

                ItemDataField("Overwrite Material Settings", ref _ramp.data.OverwritePhysics, dirtyMesh: false);

                EditorGUI.BeginDisabledGroup(!_ramp.data.OverwritePhysics);
                ItemDataField("Elasticity", ref _ramp.data.Elasticity, dirtyMesh: false);
                ItemDataField("Friction", ref _ramp.data.Friction, dirtyMesh: false);
                ItemDataField("Scatter Angle", ref _ramp.data.Scatter, dirtyMesh: false);
                EditorGUI.EndDisabledGroup();

                ItemDataField("Collidable", ref _ramp.data.IsCollidable, dirtyMesh: false);
            }
            EditorGUILayout.EndFoldoutHeaderGroup();

            if (_foldoutMisc = EditorGUILayout.BeginFoldoutHeaderGroup(_foldoutMisc, "Misc"))
            {
                ItemDataField("Timer Enabled", ref _ramp.data.IsTimerEnabled, dirtyMesh: false);
                ItemDataField("Timer Interval", ref _ramp.data.TimerInterval, dirtyMesh: false);
            }
            EditorGUILayout.EndFoldoutHeaderGroup();

            base.OnInspectorGUI();
        }
        public override void OnInspectorGUI()
        {
            OnPreInspectorGUI();

            if (_foldoutColorsAndFormatting = EditorGUILayout.BeginFoldoutHeaderGroup(_foldoutColorsAndFormatting, "Colors & Formatting"))
            {
                GUILayout.BeginHorizontal();
                MeshImporterGui();
                if (GUILayout.Button("Export Mesh"))
                {
                    ExportMesh();
                }
                GUILayout.EndHorizontal();

                TextureField("Image", ref _prim.data.Image);
                TextureField("Normal Map", ref _prim.data.NormalMap);
                EditorGUI.indentLevel++;
                ItemDataField("Object Space", ref _prim.data.ObjectSpaceNormalMap);
                EditorGUI.indentLevel--;
                MaterialField("Material", ref _prim.data.Material);

                ItemDataField("Visible", ref _prim.data.IsVisible);
            }
            EditorGUILayout.EndFoldoutHeaderGroup();

            if (_foldoutPosition = EditorGUILayout.BeginFoldoutHeaderGroup(_foldoutPosition, "Position & Translation"))
            {
                EditorGUILayout.LabelField("Base Position");
                EditorGUI.indentLevel++;
                ItemDataField("", ref _prim.data.Position);
                EditorGUI.indentLevel--;

                EditorGUILayout.LabelField("Base Size");
                EditorGUI.indentLevel++;
                ItemDataField("", ref _prim.data.Size);
                EditorGUI.indentLevel--;

                EditorGUILayout.LabelField("Rotation and Transposition");
                EditorGUI.indentLevel++;
                ItemDataField("0: RotX", ref _prim.data.RotAndTra[0]);
                ItemDataField("1: RotY", ref _prim.data.RotAndTra[1]);
                ItemDataField("2: RotZ", ref _prim.data.RotAndTra[2]);
                ItemDataField("3: TransX", ref _prim.data.RotAndTra[3]);
                ItemDataField("4: TransY", ref _prim.data.RotAndTra[4]);
                ItemDataField("5: TransZ", ref _prim.data.RotAndTra[5]);
                ItemDataField("6: ObjRotX", ref _prim.data.RotAndTra[6]);
                ItemDataField("7: ObjRotY", ref _prim.data.RotAndTra[7]);
                ItemDataField("8: ObjRotZ", ref _prim.data.RotAndTra[8]);
                EditorGUI.indentLevel--;
            }
            EditorGUILayout.EndFoldoutHeaderGroup();

            if (_foldoutPhysics = EditorGUILayout.BeginFoldoutHeaderGroup(_foldoutPhysics, "Physics"))
            {
                EditorGUI.BeginDisabledGroup(_prim.data.IsToy || !_prim.data.IsCollidable);

                ItemDataField("Has Hit Event", ref _prim.data.HitEvent, dirtyMesh: false);
                EditorGUI.BeginDisabledGroup(!_prim.data.HitEvent);
                ItemDataField("Has Hit Event", ref _prim.data.Threshold, dirtyMesh: false);
                EditorGUI.EndDisabledGroup();

                EditorGUI.BeginDisabledGroup(_prim.data.OverwritePhysics);
                MaterialField("Physics Material", ref _prim.data.PhysicsMaterial, dirtyMesh: false);
                EditorGUI.EndDisabledGroup();
                ItemDataField("Overwrite Material Settings", ref _prim.data.OverwritePhysics, dirtyMesh: false);
                EditorGUI.BeginDisabledGroup(!_prim.data.OverwritePhysics);
                ItemDataField("Elasticity", ref _prim.data.Elasticity, dirtyMesh: false);
                ItemDataField("Elasticity Falloff", ref _prim.data.ElasticityFalloff, dirtyMesh: false);
                ItemDataField("Friction", ref _prim.data.Friction, dirtyMesh: false);
                ItemDataField("Scatter Angle", ref _prim.data.Scatter, dirtyMesh: false);
                EditorGUI.EndDisabledGroup();

                EditorGUI.EndDisabledGroup();

                EditorGUI.BeginDisabledGroup(_prim.data.IsToy);
                ItemDataField("Collidable", ref _prim.data.IsCollidable, dirtyMesh: false);
                EditorGUI.EndDisabledGroup();

                ItemDataField("Toy", ref _prim.data.IsToy, dirtyMesh: false);

                EditorGUI.BeginDisabledGroup(_prim.data.IsToy);
                ItemDataSlider("Reduce Polygons By", ref _prim.data.CollisionReductionFactor, 0f, 1f, dirtyMesh: false);
                EditorGUI.EndDisabledGroup();
            }
            EditorGUILayout.EndFoldoutHeaderGroup();

            base.OnInspectorGUI();
        }
Exemple #27
0
        public override void OnInspectorGUI()
        {
            if (!m_Target)
            {
                return;
            }

            using (new EditorGUILayout.HorizontalScope())
            {
                if (GUILayout.Button("Populate"))
                {
                    m_Target.Populate();
                }

                if (GUILayout.Button("Apply"))
                {
                    m_Target.Apply();
                }

                if (GUILayout.Button("Reset"))
                {
                    m_Target.Reset();
                    RefreshEditors();
                    Repaint();
                }
            }

            serializedObject.Update();

            if (m_Target.renderers.Length == 0)
            {
                EditorGUILayout.HelpBox($"{typeof(MaterialOverrideGroup)} contains no renderers.", MessageType.Info);
                return;
            }

            // Find null renderers
            var oldRenderers = new List <Renderer>();

            foreach (var renderer in m_Target.renderers)
            {
                if (renderer == null)
                {
                    continue;
                }

                oldRenderers.Add(renderer);
            }

            // Remove null renderers
            if (oldRenderers.Count != m_Renderers.arraySize)
            {
                m_Renderers.ClearArray();
                foreach (var renderer in oldRenderers)
                {
                    m_Renderers.arraySize += 1;
                    m_Renderers.GetArrayElementAtIndex(m_Renderers.arraySize - 1).objectReferenceValue = (Object)renderer;
                }
            }

            EditorGUI.BeginChangeCheck();

            CoreEditorUtils.DrawSplitter();
            m_ShaderOverridesFoldout.value = EditorGUILayout.BeginFoldoutHeaderGroup(m_ShaderOverridesFoldout.value, "Shader Overrides");
            if (m_ShaderOverridesFoldout.value)
            {
                var targetShaders = m_Target.shaders;

                for (int i = 0, count = targetShaders.Length; i < count; i++)
                {
                    if (!m_Target.TryGetOverride(targetShaders[i], out var propertyOverrideList))
                    {
                        continue;
                    }

                    if (!m_ShaderOverrideEditors.TryGetValue(propertyOverrideList, out var editor))
                    {
                        continue;
                    }

                    // Draw material header
                    CoreEditorUtils.DrawSplitter();
                    bool displayContent = CoreEditorUtils.DrawHeaderToggle(
                        targetShaders[i].name,
                        editor.baseProperty,
                        editor.active,
                        null,
                        () => editor.showHidden,
                        () => editor.showHidden = !editor.showHidden
                        );

                    if (displayContent)
                    {
                        using (new EditorGUI.DisabledScope(!editor.active.boolValue))
                        {
                            editor.OnInspectorGUI();
                        }
                    }
                }

                if (m_Target.shaders.Length == 0)
                {
                    EditorGUILayout.HelpBox($"{typeof(MaterialOverrideGroup)} contains no shaders.", MessageType.Info);
                }
            }

            EditorGUILayout.EndFoldoutHeaderGroup();

            CoreEditorUtils.DrawSplitter();
            m_MaterialOverridesFoldout.value = EditorGUILayout.BeginFoldoutHeaderGroup(m_MaterialOverridesFoldout.value, "Material Overrides");
            if (m_MaterialOverridesFoldout.value)
            {
                var targetMaterials = m_Target.materials;

                // Draw materials
                for (int i = 0, count = targetMaterials.Length; i < count; i++)
                {
                    if (!m_Target.TryGetOverride(targetMaterials[i], out var propertyOverrideList))
                    {
                        continue;
                    }

                    if (!m_ShaderOverrideEditors.TryGetValue(propertyOverrideList, out var editor))
                    {
                        continue;
                    }

                    // Draw material header
                    CoreEditorUtils.DrawSplitter();
                    bool displayContent = CoreEditorUtils.DrawHeaderToggle(
                        targetMaterials[i].name,
                        editor.baseProperty,
                        editor.active,
                        null,
                        () => editor.showHidden,
                        () => editor.showHidden = !editor.showHidden
                        );

                    if (displayContent)
                    {
                        using (new EditorGUI.DisabledScope(!editor.active.boolValue))
                        {
                            editor.OnInspectorGUI();
                        }
                    }
                }

                if (m_Target.materials.Length == 0)
                {
                    EditorGUILayout.HelpBox($"{typeof(MaterialOverrideGroup)} contains no materials.", MessageType.Info);
                }
            }

            EditorGUILayout.EndFoldoutHeaderGroup();

            serializedObject.ApplyModifiedProperties();

            if (EditorGUI.EndChangeCheck())
            {
                m_Target.Apply();
            }
        }
Exemple #28
0
    void OnGUI()
    {
        GUILayout.BeginHorizontal();
        GUILayout.Label("Quest Sabers", EditorStyles.boldLabel);

        if (GUILayout.Button("Go to saber scene"))
        {
            EditorSceneManager.OpenScene("Assets/scenes/questsabers.unity");
            OnFocus();
        }

        if (GUILayout.Button("Add New Saber Template"))
        {
            AddSaberTemplate();
        }
        GUILayout.EndHorizontal();

        GUILayout.Space(5);
        if (GUILayout.Button("Export all Active sabers"))
        {
            ExportAll();
        }
        if (GUILayout.Button("Export and Upload all Active sabers"))
        {
            ExportAllAndUpload();
        }

        GUILayout.Space(10);

        foreach (var saber in questsabers)
        {
            if (saber == null)
            {
                continue;
            }
            GUILayout.Label("GameObject : " + saber.gameObject.name, EditorStyles.boldLabel);
            saber.descriptorFolded = EditorGUILayout.BeginFoldoutHeaderGroup(saber.descriptorFolded, "Saber Descriptor");

            if (saber.descriptorFolded)
            {
                GUILayout.Space(5);
                DescriptorDisplay(saber);
            }
            EditorGUILayout.EndFoldoutHeaderGroup();

            GUILayout.Space(5);

            saber.configFolded = EditorGUILayout.BeginFoldoutHeaderGroup(saber.configFolded, "Saber config");
            if (saber.configFolded)
            {
                SaberConfigDisplay(saber);
            }
            EditorGUILayout.EndFoldoutHeaderGroup();

            EditorGUILayout.Space(10);
            bool disableExport = shouldDisableExport(saber);

            if (disableExport && exporterConfig.forceAllowExport)
            {
                GUILayout.Label("WARNING! force allow export is set to true so this saber file is unlikely to work correctly in game!", EditorStyles.boldLabel);
            }
            EditorGUI.BeginDisabledGroup(disableExport && !exporterConfig.forceAllowExport);
            if (GUILayout.Button("Export " + saber.descriptor.objectName + "." + extension))
            {
                ExportSaberFile(saber);
            }

            if (GUILayout.Button("Export and Upload " + saber.descriptor.objectName + "." + extension + " To Quest"))
            {
                ExportAndUpload(saber);
            }
            EditorGUI.EndDisabledGroup();

            if (QosmeticUtils.GetObjectBounds(saber.gameObject).extents.z * 2.0 > 2.0)
            {
                GUILayout.Label("The saber might be too long", EditorStyles.boldLabel);
            }

            if (QosmeticUtils.GetObjectBounds(saber.gameObject).extents.z * 2.0 < 0.5)
            {
                GUILayout.Label("The saber might be too short", EditorStyles.boldLabel);
            }

            if (QosmeticUtils.GetObjectBounds(saber.gameObject).extents.x * 2.0 > 1.0)
            {
                GUILayout.Label("The saber might be too large", EditorStyles.boldLabel);
            }

            if (debug)
            {
                if (GUILayout.Button("Log config json"))
                {
                    SetTrailConfigs(saber);

                    Debug.Log(JsonUtility.ToJson(saber.config, true));
                }
            }
        }
    }
    public override void OnInspectorGUI()
    {
        serializedObject.Update();

        gameVariablesFoldout = EditorGUILayout.BeginFoldoutHeaderGroup(gameVariablesFoldout, "Game variables", header1Style);

        EditorGUILayout.EndFoldoutHeaderGroup();

        EditorGUILayout.Space(5);

        if (gameVariablesFoldout)
        {
            boardVariablesFoldout = EditorGUILayout.BeginFoldoutHeaderGroup(boardVariablesFoldout, "Board variables", header2Style);

            if (boardVariablesFoldout)
            {
                EditorGUILayout.PropertyField(boardWidth);
                EditorGUILayout.PropertyField(boardHeight);
                EditorGUILayout.PropertyField(spawnPos);
            }

            EditorGUILayout.EndFoldoutHeaderGroup();

            EditorGUILayout.Space(10);

            movementVariablesFoldout = EditorGUILayout.BeginFoldoutHeaderGroup(movementVariablesFoldout, "Movement variables", header2Style);

            if (movementVariablesFoldout)
            {
                EditorGUILayout.PropertyField(gravityDropLimit);
                EditorGUILayout.PropertyField(softDropLimit);
                EditorGUILayout.PropertyField(horMovLimit);
                EditorGUILayout.PropertyField(lockedLimitTime);
            }

            EditorGUILayout.EndFoldoutHeaderGroup();

            EditorGUILayout.Space(10);

            scoreVariablesFoldout = EditorGUILayout.BeginFoldoutHeaderGroup(scoreVariablesFoldout, "Score and other variables", header2Style);

            if (scoreVariablesFoldout)
            {
                EditorGUILayout.PropertyField(linesToLevelUp);
                EditorGUILayout.PropertyField(possibleScores);
            }

            EditorGUILayout.EndFoldoutHeaderGroup();
        }

        EditorGUILayout.Space(10);

        /*botVariablesFoldout = EditorGUILayout.BeginFoldoutHeaderGroup(botVariablesFoldout, "Bot variables", header1Style);
         *
         * EditorGUILayout.EndFoldoutHeaderGroup();
         *
         * EditorGUILayout.Space(5);
         *
         * if (botVariablesFoldout)
         * {
         *  EditorGUILayout.PropertyField(botVersion);
         *  EditorGUILayout.PropertyField(generation);
         *  EditorGUILayout.PropertyField(initialActionTime);
         *  EditorGUILayout.PropertyField(nextActionsTime);
         *
         *  EditorGUILayout.Space(10);
         *
         *  botWeightsFoldout = EditorGUILayout.BeginFoldoutHeaderGroup(botWeightsFoldout, "Bot weights", header2Style);
         *
         *  if(botWeightsFoldout)
         *  {
         *      EditorGUILayout.PropertyField(holesWeight);
         *      EditorGUILayout.PropertyField(bumpinessWeight);
         *      EditorGUILayout.PropertyField(linesWeight);
         *      EditorGUILayout.PropertyField(linesHolesWeight);
         *      EditorGUILayout.PropertyField(humanizedWeight);
         *  }
         *
         *  EditorGUILayout.EndFoldoutHeaderGroup();
         *
         *  EditorGUILayout.Space(10);
         *
         *  geneticAlgorithmVariablesFoldout = EditorGUILayout.BeginFoldoutHeaderGroup(geneticAlgorithmVariablesFoldout, "Genetic algorithm variables", header2Style);
         *
         *  if(geneticAlgorithmVariablesFoldout)
         *  {
         *      EditorGUILayout.PropertyField(populationSize);
         *      EditorGUILayout.PropertyField(mutationRate);
         *      EditorGUILayout.PropertyField(pieceLimitTraining);
         *  }
         *
         *  EditorGUILayout.EndFoldoutHeaderGroup();
         *
         *  EditorGUILayout.Space(10);
         *
         *  testingVariablesFoldout = EditorGUILayout.BeginFoldoutHeaderGroup(testingVariablesFoldout, "Testing variables", header2Style);
         *
         *  if(testingVariablesFoldout)
         *  {
         *      EditorGUILayout.PropertyField(initialCalculationTime);
         *      EditorGUILayout.PropertyField(decreasingCalculationTimeFactor);
         *  }
         *
         *  EditorGUILayout.EndFoldoutHeaderGroup();
         * }
         *
         * EditorGUILayout.Space(10);*/

        EditorGUILayout.PropertyField(debugMode);

        serializedObject.ApplyModifiedProperties();
    }
Exemple #30
0
        public void OnTransformField(Transform owner)
        {
            toggle = EditorGUILayout.BeginFoldoutHeaderGroup(toggle, "出生挂点");
            if (toggle)
            {
                if (owner)
                {
                    EditorGUILayout.BeginHorizontal();
                    //bool searchChange = false;
                    var s = EditorGUILayout.TextField(search);
                    if (s != search)
                    {
                        //searchChange = true;
                        search = s;
                    }
                    var transforms = owner.GetComponentsInChildren <Transform>().Select(r => r.fullName()).Select(r => r.Replace("/", "$")).ToList();
                    if (!string.IsNullOrEmpty(search))
                    {
                        transforms = transforms.FindAll(r => Regex.IsMatch(r, search, RegexOptions.IgnoreCase));
                    }

                    if (transforms.Count > 0)
                    {
                        //if (searchChange)
                        //{
                        if (Node.transformPath == null)
                        {
                            Node.transformPath = string.Empty;
                        }

                        var findIndex = transforms.FindIndex(r => r.Contains(Node.transformPath.Replace("/", "$")));
                        Node.transformIndex = findIndex == -1 ? 0 : findIndex;

                        //}

                        var index = EditorGUILayout.Popup(Node.transformIndex, transforms.ToArray());
                        var root  = transforms[Node.transformIndex];

                        if (index != Node.transformIndex)
                        {
                            root = transforms[index];
                        }

                        if (root.Contains("$"))
                        {
                            root = root.Substring(root.IndexOf("$") + 1);
                            Node.transformPath = root.Replace("$", "/");
                            Node.transform     = owner.transform.Find(Node.transformPath);
                        }
                        else
                        {
                            Node.transformPath = "";
                            Node.transform     = owner.transform;
                        }
                    }
                    else
                    {
                        EditorGUILayout.LabelField("查找失败");
                        //Node.transformPath = "";
                        //Node.transform = owner.transform;
                    }
                }
                EditorGUILayout.EndHorizontal();
                EditorGUILayout.ObjectField(Node.transform, typeof(Transform), false);
                Node.isWorld          = EditorGUILayout.Toggle("世界", Node.isWorld);
                Node.localPosition    = EditorGUILayout.Vector3Field("offset", Node.localPosition);
                Node.localEulerAngles = EditorGUILayout.Vector3Field("eulur", Node.localEulerAngles);
                Node.localScale       = EditorGUILayout.Vector3Field("scale", Node.localScale);
            }
            EditorGUILayout.EndFoldoutHeaderGroup();
        }