Пример #1
0
        /// <summary>
        /// delegate用のTargetMaterialリスト取得関数
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="node"></param>
        /// <param name="varName"></param>
        /// <returns></returns>
        List <T> GetLineFunctionsList <T>(NodeBase node, String varName)
            where T : UnityEngine.Object
        {
            MaterialLineFunctionsNode lineFunctionsNode =
                node as MaterialLineFunctionsNode;

            List <T> newList = lineFunctionsNode.TargetMaterials
                               .Select(x => x as T)
                               .ToList();

            return(newList);
        }
Пример #2
0
        void MakeTargetMaterials(MaterialLineFunctionsNode MaterialLineFunctionsNode)
        {
            GUIStyle style = new GUIStyle();

            style.margin = new RectOffset(4, 8, 0, 4);

            MakeList <Material>(propTargetMaterials,
                                reorderableTargetMaterialList,
                                style,
                                "Target Materials",
                                true);

            EditorGUILayout.Separator();
        }
Пример #3
0
        /// <summary>
        /// Objectを追加、削除を行うリストを作成
        /// </summary>
        /// <typeparam name="T">リストの型</typeparam>
        /// <param name="prop">リストのプロパティ</param>
        /// <param name="reorderList">リスト</param>
        /// <param name="style">リストのスタイル</param>
        void MakeList <T>(SerializedProperty prop,
                          ReorderableList reorderList,
                          GUIStyle style,
                          String label,
                          bool checkOtherNode = false)
            where T : UnityEngine.Object
        {
            List <GameObject> lineFunctionsList = new List <GameObject>();

            MaterialLineFunctionsNode currentLineFunctions = target as MaterialLineFunctionsNode;

            LineListNode lineListNode =
                currentLineFunctions.transform.parent != null?
                currentLineFunctions.transform.parent.GetComponent <LineListNode>() :
                    null;

            List <GameObject> parentList;

            if (lineListNode != null)
            {
                lineFunctionsList.AddRange(lineListNode.LineFunctionsList);
                parentList = lineListNode.LineFunctionsList;
            }
            else
            {
                checkOtherNode = false;
                parentList     = null;
            }

            EditorGUILayout.LabelField(label);


            EditorGUILayout.VerticalScope verticalLayout
                = new EditorGUILayout.VerticalScope(style);

            // ドラッグアンドドロップ処理
            Common.DragAndDropObject <T, MaterialLineFunctionsNode>(
                lineListNode,
                parentList,
                prop,
                verticalLayout.rect,
                GetList <T>,
                checkOtherNode);

            // 表示
            using (verticalLayout)
            {
                reorderList.DoLayoutList();
            }
        }
Пример #4
0
        /// <summary>
        /// delegate用リスト取得関数
        /// </summary>
        /// <typeparam name="T">リストのタイプ</typeparam>
        /// <param name="node">取得を行うノード</param>
        /// <param name="varName">取得する変数名</param>
        /// <returns>取得リスト</returns>
        List <T> GetList <T>(NodeBase node, String varName)
            where T : UnityEngine.Object
        {
            MaterialLineFunctionsNode lineFunctionsNode =
                node as MaterialLineFunctionsNode;

            List <T> newList = new List <T>();

            switch (varName)
            {
            case "TargetMaterials":
                newList = lineFunctionsNode.TargetMaterials
                          .Select(x => x as T)
                          .ToList();
                break;

            case "DrawObjects":
                newList = lineFunctionsNode.DrawObjects
                          .Select(x => x as T)
                          .ToList();
                break;

            case "DrawMaterials":
                newList = lineFunctionsNode.DrawMaterials
                          .Select(x => x as T)
                          .ToList();
                break;

            case "MaskObjects":
                newList = lineFunctionsNode.MaskObjects
                          .Select(x => x as T)
                          .ToList();
                break;

            case "MaskMaterials":
                newList = lineFunctionsNode.MaskMaterials
                          .Select(x => x as T)
                          .ToList();
                break;

            default:
                break;
            }

            return(newList);
        }
Пример #5
0
        /// <summary>
        /// EdgeDetection項目のGUIを追加
        /// </summary>
        void MakeEdgeDetection(MaterialLineFunctionsNode node)
        {
            foldoutEdgeDetection =
                EditorGUILayout.Foldout(foldoutEdgeDetection, "EdgeDetection");
            if (!foldoutEdgeDetection)
            {
                return;
            }

            ++EditorGUI.indentLevel;

            // Disable Intersection
            propDisableIntersection.boolValue =
                EditorGUILayout.Toggle("Disable Intersection",
                                       propDisableIntersection.boolValue);

            // Draw Hidden Lines
            propDrawHiddenLines.boolValue =
                EditorGUILayout.Toggle("Draw Hidden Lines",
                                       propDrawHiddenLines.boolValue);


            using (new EditorGUI.DisabledGroupScope(propDrawHiddenLines.boolValue))
            {
                // Draw Hidden Lines of Target
                EditorGUILayout.LabelField("Draw Hidden Lines of Target");

                ++EditorGUI.indentLevel;

                propDrawHiddenLinesOfTarget.boolValue =
                    EditorGUILayout.Toggle("On",
                                           propDrawHiddenLinesOfTarget.boolValue);

                GUIStyle style = new GUIStyle();
                style.margin = new RectOffset(60, 8, 0, 4);

                using (new EditorGUI.DisabledGroupScope(!propDrawHiddenLinesOfTarget.boolValue))
                {
                    // Draw Objects
                    MakeList <GameObject>(propDrawObjects,
                                          reorderableDrawObjectList,
                                          style,
                                          "Object List");

                    // Draw Materials
                    MakeList <Material>(propDrawMaterials,
                                        reorderableDrawMaterialList,
                                        style,
                                        "Material List");
                }

                --EditorGUI.indentLevel;

                // Mask Hidden Lines of Target
                EditorGUILayout.LabelField("Mask Hidden Lines of Target");

                ++EditorGUI.indentLevel;

                propMaskHiddenLinesOfTarget.boolValue =
                    EditorGUILayout.Toggle("On",
                                           propMaskHiddenLinesOfTarget.boolValue);


                using (new EditorGUI.DisabledGroupScope(!propMaskHiddenLinesOfTarget.boolValue))
                {
                    // Mask Objects
                    MakeList <GameObject>(propMaskObjects,
                                          reorderableMaskObjectList,
                                          style,
                                          "Object List");

                    // Mask Materials
                    MakeList <Material>(propMaskMaterials,
                                        reorderableMaskMaterialList,
                                        style,
                                        "Material List");
                }

                --EditorGUI.indentLevel;
            }


            --EditorGUI.indentLevel;
        }