Exemplo n.º 1
0
        /// <summary>
        /// AlphaReduction項目のGUIの作成
        /// </summary>
        /// <param name="brushDetailNode">BrushDetailNode</param>
        void MakeAlphaReduction(BrushDetailNode brushDetailNode)
        {
            foldoutAlphaReduction =
                EditorGUILayout.Foldout(foldoutAlphaReduction, "Alpha Reduction");
            if (!foldoutAlphaReduction)
            {
                return;
            }

            ++EditorGUI.indentLevel;

            // Enable
            propAlphaReductionEnable.boolValue =
                EditorGUILayout.Toggle("Enable", propAlphaReductionEnable.boolValue);

            using (new EditorGUI.DisabledGroupScope(!propAlphaReductionEnable.boolValue))
            {
                // Curve
                // MEMO: 2017/07/14 Unity2017にて、Serializeされた変数から直接呼び出すと
                // エディタでの反映が上手くいかないため、第二引数をバッファ変数から読ませる
                propAlphaReductionCurve.animationCurveValue =
                    EditorGUILayout.CurveField("Curve",
                                               alphaCurve, // propAlphaReductionCurve.animationCurveValue,
                                               Color.green,
                                               new Rect(0.0f, 0.0f, 1.0f, 1.0f));
            }

            EditorGUILayout.Separator();

            --EditorGUI.indentLevel;
        }
Exemplo n.º 2
0
        /// <summary>
        /// BrushDetail部分のGUIの作成
        /// </summary>
        /// <param name="brushDetailObject">BrushDetailコンポーネントを持っているGameObject</param>
        void MakeBrushDetail(GameObject brushDetailObject)
        {
            Action NoBrushDetails = () =>
            {
                EditorGUILayout.Slider("Stretch", 0, -1.0f, 1.0f);
                EditorGUILayout.Slider("Angle", 0, -360.0f, 360.0f);
            };

            if (brushDetailObject == null)
            {
                NoBrushDetails();
                return;
            }

            BrushDetailNode brushDetailNode = brushDetailObject.GetComponent <BrushDetailNode>();

            if (brushDetailNode == null)
            {
                NoBrushDetails();
                return;
            }

            serializedBrushDetailParams.Update();

            // Stretch
            propStretch.floatValue = EditorGUILayout.Slider("Stretch",
                                                            propStretch.floatValue,
                                                            -1.0f, 1.0f);

            // Angle
            propAngle.floatValue = EditorGUILayout.Slider("Angle",
                                                          propAngle.floatValue,
                                                          -360.0f, 360.0f);

            serializedBrushDetailParams.ApplyModifiedProperties();
        }
Exemplo n.º 3
0
        /// <summary>
        /// ColorRange項目のGUIの作成
        /// </summary>
        /// <param name="brushDetailNode">BrushDetailNode</param>
        void MakeColorRange(BrushDetailNode brushDetailNode)
        {
            foldoutColorRange =
                EditorGUILayout.Foldout(foldoutColorRange, "Color Range");
            if (!foldoutColorRange)
            {
                return;
            }

            ++EditorGUI.indentLevel;

            // Color Space
            var colorSpace = (ColorSpace)Enum
                             .GetValues(typeof(ColorSpace))
                             .GetValue(propColorSpaceType.enumValueIndex);

            propColorSpaceType.enumValueIndex =
                (int)(ColorSpace)EditorGUILayout.EnumPopup("Color Space", colorSpace);

            ++EditorGUI.indentLevel;

            // RGB
            if (propColorSpaceType.enumValueIndex == (int)ColorSpace.RGB)
            {
                // Red
                propColorRed.floatValue = EditorGUILayout.Slider("R",
                                                                 propColorRed.floatValue,
                                                                 0.0f, 1.0f);

                // Green
                propColorGreen.floatValue = EditorGUILayout.Slider("G",
                                                                   propColorGreen.floatValue,
                                                                   0.0f, 1.0f);

                // Blue
                propColorBlue.floatValue = EditorGUILayout.Slider("B",
                                                                  propColorBlue.floatValue,
                                                                  0.0f, 1.0f);
            }

            // HSV
            else
            {
                // Hue
                propColorHue.floatValue = EditorGUILayout.Slider("H",
                                                                 propColorHue.floatValue,
                                                                 0.0f, 1.0f);

                // Saturation
                propColorSaturation.floatValue = EditorGUILayout.Slider("S",
                                                                        propColorSaturation.floatValue,
                                                                        0.0f, 1.0f);

                // Value
                propColorValue.floatValue = EditorGUILayout.Slider("V",
                                                                   propColorValue.floatValue,
                                                                   0.0f, 1.0f);
            }

            --EditorGUI.indentLevel;

            EditorGUILayout.Separator();

            --EditorGUI.indentLevel;
        }
Exemplo n.º 4
0
        /// <summary>
        /// Distortion項目のGUIの作成
        /// </summary>
        /// <param name="brushDetailNode">BrushDetailNode</param>
        void MakeDistortion(BrushDetailNode brushDetailNode)
        {
            foldoutDistortion =
                EditorGUILayout.Foldout(foldoutDistortion, "Distortion");
            if (!foldoutDistortion)
            {
                return;
            }

            ++EditorGUI.indentLevel;

            // Enable
            propDistortionEnable.boolValue =
                EditorGUILayout.Toggle("Enable", propDistortionEnable.boolValue);


            using (new EditorGUI.DisabledGroupScope(!propDistortionEnable.boolValue))
            {
                // Distortion Map
                EditorGUICustomLayout.PencilNodeField(
                    "Brush Map",
                    typeof(TextureMapNode),
                    serializedObject,
                    propDistortionMap,
                    selectedObject => { },
                    () =>
                {
                    var textureMap                         = Instantiate(Prefabs.TextureMap);
                    textureMap.name                        = Common.GetAllGameObject().GetUniqueName(Prefabs.TextureMap);
                    textureMap.transform.parent            = brushDetailNode.transform;
                    propDistortionMap.objectReferenceValue = textureMap;
                    Selection.activeObject                 = textureMap;
                    Undo.RegisterCreatedObjectUndo(textureMap, "Create Texture Map Node");
                });



                // Map Amount
                propMapAmount.floatValue = EditorGUILayout.Slider("Map Amount",
                                                                  propMapAmount.floatValue,
                                                                  0.0f, 1000.0f);

                // Amount
                propAmount.floatValue = EditorGUILayout.Slider("Amount",
                                                               propAmount.floatValue,
                                                               0.0f, 1000.0f);

                // Random
                propRandom.floatValue = EditorGUILayout.Slider("Random",
                                                               propRandom.floatValue,
                                                               0.0f, 1.0f);
                // Cycles
                propCycles.floatValue = EditorGUILayout.Slider("Cycles",
                                                               propCycles.floatValue,
                                                               5.0f, 1000.0f);
                // Cycles Random
                propCyclesRandom.floatValue = EditorGUILayout.Slider("Cycles Random",
                                                                     propCyclesRandom.floatValue,
                                                                     0.0f, 1.0f);

                // Phase
                propPhase.floatValue = EditorGUILayout.Slider("Phase",
                                                              propPhase.floatValue,
                                                              -9999.0f, 9999.0f);
                // Phase Random
                propPhaseRandom.floatValue = EditorGUILayout.Slider("Phase Random",
                                                                    propPhaseRandom.floatValue,
                                                                    0.0f, 1.0f);
            }

            EditorGUILayout.Separator();

            --EditorGUI.indentLevel;
        }
Exemplo n.º 5
0
        /// <summary>
        /// Stroke項目のGUIの作成
        /// </summary>
        /// <param name="brushDetailNode">BrushDetailNode</param>
        void MakeStroke(BrushDetailNode brushDetailNode)
        {
            foldoutStroke =
                EditorGUILayout.Foldout(foldoutStroke, "Stroke");
            if (!foldoutStroke)
            {
                return;
            }

            ++EditorGUI.indentLevel;

            using (new EditorGUI.DisabledGroupScope(currentBrushType == BrushDetailNode.Brush.Simple))
            {
                // Stroke Type
                var strokeType = (Stroke)Enum
                                 .GetValues(typeof(Stroke))
                                 .GetValue(propStrokeType.enumValueIndex);

                propStrokeType.enumValueIndex =
                    (int)(Stroke)EditorGUILayout.EnumPopup("Stroke Type", strokeType);
            }


            // Line Type
            var lineType = (Line)Enum
                           .GetValues(typeof(Line))
                           .GetValue(propLineType.enumValueIndex);

            propLineType.enumValueIndex =
                (int)(Line)EditorGUILayout.EnumPopup("Line Type", lineType);

            currentLineType = (Line)propLineType.enumValueIndex;


            using (new EditorGUI.DisabledGroupScope(currentLineType == Line.Full))
            {
                // Length
                propLength.floatValue = EditorGUILayout.Slider("Length",
                                                               propLength.floatValue,
                                                               0.001f, 10000.0f);

                // Length Random
                propLengthRandom.floatValue = EditorGUILayout.Slider("Length Random",
                                                                     propLengthRandom.floatValue,
                                                                     0.0f, 1.0f);

                // Space
                propSpace.floatValue = EditorGUILayout.Slider("Space",
                                                              propSpace.floatValue,
                                                              1.0f, 10000.0f);

                // Space Random
                propSpaceRandom.floatValue = EditorGUILayout.Slider("Space Random",
                                                                    propSpaceRandom.floatValue,
                                                                    0.0f, 1.0f);
            }

            // Length Size Random
            propLengthSizeRandom.floatValue = EditorGUILayout.Slider("Length Size Random",
                                                                     propLengthSizeRandom.floatValue,
                                                                     0.0f, 1.0f);

            // Extend
            propExtend.floatValue = EditorGUILayout.Slider("Extend",
                                                           propExtend.floatValue,
                                                           0.0f, 10000.0f);

            // Extend Random
            propExtendRandom.floatValue = EditorGUILayout.Slider("Extend Random",
                                                                 propExtendRandom.floatValue,
                                                                 0.0f, 1.0f);

            // Line Copy
            propLineCopy.intValue = EditorGUILayout.IntSlider("Line Copy",
                                                              propLineCopy.intValue,
                                                              1, 10);

            // Line Copy Random
            propLineCopyRandom.intValue = EditorGUILayout.IntSlider("Line Copy Random",
                                                                    propLineCopyRandom.intValue,
                                                                    0, 10);

            // Normal Offset
            propNormalOffset.floatValue = EditorGUILayout.Slider("Normal Offset",
                                                                 propNormalOffset.floatValue,
                                                                 -1000.0f, 1000.0f);

            // Normal Offset Random
            propNormalOffsetRandom.floatValue = EditorGUILayout.Slider("Normal Offset Random",
                                                                       propNormalOffsetRandom.floatValue,
                                                                       0.0f, 1000.0f);

            // X Offset
            propXOffset.floatValue = EditorGUILayout.Slider("X Offset",
                                                            propXOffset.floatValue,
                                                            -1000.0f, 1000.0f);

            // X Offset Random
            propXOffsetRandom.floatValue = EditorGUILayout.Slider("X Offset Random",
                                                                  propXOffsetRandom.floatValue,
                                                                  0.0f, 1000.0f);

            // Y Offset
            propYOffset.floatValue = EditorGUILayout.Slider("Y Offset",
                                                            propYOffset.floatValue,
                                                            -1000.0f, 1000.0f);

            // Y Offset Random
            propYOffsetRandom.floatValue = EditorGUILayout.Slider("Y Offset Random",
                                                                  propYOffsetRandom.floatValue,
                                                                  0.0f, 1000.0f);

            // Line Split Angle
            propLineSplitAngle.floatValue = EditorGUILayout.Slider("Line Split Angle",
                                                                   propLineSplitAngle.floatValue,
                                                                   0.0f, 180.0f);

            // Min Line Length
            propMinLineLength.floatValue = EditorGUILayout.Slider("Min Line Length",
                                                                  propMinLineLength.floatValue,
                                                                  0.0f, 100.0f);

            // Line Link Length
            propLineLinkLength.floatValue = EditorGUILayout.Slider("Line Link Length",
                                                                   propLineLinkLength.floatValue,
                                                                   0.0f, 100.0f);

            // Line Direction
            propLineDirection.floatValue = EditorGUILayout.Slider("Line Direction",
                                                                  propLineDirection.floatValue,
                                                                  -180.0f, 180.0f);

            // Loop Direction
            var loopDirection = (LoopDirection)Enum
                                .GetValues(typeof(LoopDirection))
                                .GetValue(propLoopDirectionType.enumValueIndex);

            propLoopDirectionType.enumValueIndex =
                (int)(LoopDirection)EditorGUILayout.EnumPopup("Loop Direction", loopDirection);

            EditorGUILayout.Separator();

            --EditorGUI.indentLevel;
        }
Exemplo n.º 6
0
        /// <summary>
        /// BrushEditor項目のGUIを作成
        /// </summary>
        /// <param name="brushDetailNode">BrushDetailNode</param>
        void MakeBrushEditor(BrushDetailNode brushDetailNode)
        {
            foldoutBrushEditor =
                EditorGUILayout.Foldout(foldoutBrushEditor, "Brush Editor");
            if (!foldoutBrushEditor)
            {
                return;
            }

            ++EditorGUI.indentLevel;

            // Brush Type
            var brushType = (Brush)Enum
                            .GetValues(typeof(Brush))
                            .GetValue(propBrushType.enumValueIndex);

            propBrushType.enumValueIndex =
                (int)(BrushDetailNode.Brush)EditorGUILayout.EnumPopup("Brush Type", brushType);

            currentBrushType = (BrushDetailNode.Brush)propBrushType.enumValueIndex;

            using (new EditorGUI.DisabledGroupScope(currentBrushType == BrushDetailNode.Brush.Simple))
            {
                // Brush Map
                EditorGUICustomLayout.PencilNodeField(
                    "Brush Map",
                    typeof(TextureMapNode),
                    serializedObject,
                    propBrushMap,
                    selectedObject => { },
                    () =>
                {
                    var textureMap                    = Instantiate(Prefabs.TextureMap);
                    textureMap.name                   = Common.GetAllGameObject().GetUniqueName(Prefabs.TextureMap);
                    textureMap.transform.parent       = brushDetailNode.transform;
                    propBrushMap.objectReferenceValue = textureMap;
                    Selection.activeObject            = textureMap;
                    Undo.RegisterCreatedObjectUndo(textureMap, "Create Texture Map Node");
                });

                // Map Opacity
                propMapOpacity.floatValue = EditorGUILayout.Slider("Map Opacity",
                                                                   propMapOpacity.floatValue,
                                                                   0.0f, 1.0f);
            }



            // Stretch
            propStretch.floatValue = EditorGUILayout.Slider("Stretch",
                                                            propStretch.floatValue,
                                                            -1.0f, 1.0f);

            // Stretch Random
            propStretchRandom.floatValue = EditorGUILayout.Slider("Stretch Random",
                                                                  propStretchRandom.floatValue,
                                                                  0.0f, 1.0f);

            // Angle
            propAngle.floatValue = EditorGUILayout.Slider("Angle",
                                                          propAngle.floatValue,
                                                          -360.0f, 360.0f);

            // Angle Random
            propAngleRandom.floatValue = EditorGUILayout.Slider("Angle Random",
                                                                propAngleRandom.floatValue,
                                                                0.0f, 1.0f);

            using (new EditorGUI.DisabledGroupScope(currentBrushType == BrushDetailNode.Brush.Simple))
            {
                // Groove
                propGroove.floatValue = EditorGUILayout.Slider("Groove",
                                                               propGroove.floatValue,
                                                               0.0f, 1.0f);

                // Groove Number
                propGrooveNumber.intValue = EditorGUILayout.IntSlider("Groove Number",
                                                                      propGrooveNumber.intValue,
                                                                      3, 20);
            }


            using (new EditorGUI.DisabledGroupScope(currentBrushType != Brush.Multiple))
            {
                // Size
                propSize.floatValue = EditorGUILayout.Slider("Size",
                                                             propSize.floatValue,
                                                             0.1f, 100.0f);

                // Size Random
                propSizeRandom.floatValue = EditorGUILayout.Slider("Size Random",
                                                                   propSizeRandom.floatValue,
                                                                   0.0f, 1.0f);
                // Antialiasing
                propAntialiasing.floatValue = EditorGUILayout.Slider("Antialiasing",
                                                                     propAntialiasing.floatValue,
                                                                     0.0f, 10.0f);

                // Horizontal Space
                propHorizontalSpace.floatValue = EditorGUILayout.Slider("Horizontal Space",
                                                                        propHorizontalSpace.floatValue,
                                                                        0.0f, 1.0f);
                // Horizontal Space Random
                propHorizontalSpaceRandom.floatValue =
                    EditorGUILayout.Slider("Horizontal Space Random",
                                           propHorizontalSpaceRandom.floatValue,
                                           0.0f, 1.0f);

                // Vertical Space
                propVerticalSpace.floatValue = EditorGUILayout.Slider("Vertical Space",
                                                                      propVerticalSpace.floatValue,
                                                                      0.0f, 1.0f);

                // Vertical Space Random
                propVerticalSpaceRandom.floatValue =
                    EditorGUILayout.Slider("Vertical Space Random",
                                           propVerticalSpaceRandom.floatValue,
                                           0.0f, 1.0f);
            }

            using (new EditorGUI.DisabledGroupScope(currentBrushType == BrushDetailNode.Brush.Simple))
            {
                // Reduction Start
                propReductionStart.floatValue = EditorGUILayout.Slider("Reduction Start",
                                                                       propReductionStart.floatValue,
                                                                       0.0f, 1.0f);

                // Reduction End
                propReductionEnd.floatValue = EditorGUILayout.Slider("Reduction End",
                                                                     propReductionEnd.floatValue,
                                                                     0.0f, 1.0f);
            }

            EditorGUILayout.Separator();

            --EditorGUI.indentLevel;
        }