private static void Show(DetailNode obj, Action beforeProperties = null)
        {
            //General
            NodeEditorGUILayout.PortField(obj.GetInputPort("Constraint"));
            NodeEditorGUILayout.PortField(obj.GetInputPort("Modifier"));

            obj.DistributionType = (DetailNode.Distribution)EditorGUILayout.EnumPopup("Distribution", obj.DistributionType);
            if (obj.DistributionType == DetailNode.Distribution.PoissonDisc)
            {
                obj.Spread = EditorGUIExtension.MinMaxFloatField("Spread", obj.Spread, 1f, 50f);
            }
            else
            {
                obj.UniformResolution = EditorGUIExtension.MinMaxIntField("Resolution", obj.UniformResolution, 2, 1024);
            }

            obj.MaxObjects = EditorGUILayout.IntField("Max Objects", obj.MaxObjects);

            if (beforeProperties != null)
            {
                beforeProperties();
            }

            EditorGUIExtension.DrawMinMax("Width Scale", ref obj.WidthScale.x, ref obj.WidthScale.y);
            EditorGUIExtension.DrawMinMax("Height Scale", ref obj.HeightScale.x, ref obj.HeightScale.y);

            if (obj.MaxObjects < 1)
            {
                obj.MaxObjects = 1;
            }
        }
        public override void OnBodyGUI()
        {
            NodeEditorGUILayout.PortField(_scatter.GetOutputPort("Output"));
            NodeEditorGUILayout.PortField(_scatter.GetInputPort("DetailNode"));

            //Object count min max
            EditorGUI.BeginChangeCheck();

            EditorGUIExtension.DrawMinMax("Distance", ref _scatter.DistanceMin, ref _scatter.DistanceMax);

            if (EditorGUI.EndChangeCheck())
            {
                serializedObject.ApplyModifiedProperties();
            }
        }