/// <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); }
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(); }
/// <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(); } }
/// <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); }
/// <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; }