public override void OnInspectorGUI()
        {
            _curve = target as NodeCurve;

            EditorGUI.BeginChangeCheck();
            var startPoint = _curve.points[0];

            startPoint.transform =
                EditorGUILayout.ObjectField("Start Point", startPoint.transform, typeof(Transform), true) as Transform;
            if (EditorGUI.EndChangeCheck())
            {
                Undo.RecordObject(_curve, "Change start point");
                EditorUtility.SetDirty(_curve);
                startPoint.SetRelativeTangent(_curve.points[1].Position);
            }

            EditorGUI.BeginChangeCheck();
            var endPoint = _curve.points[_curve.points.Count - 1];

            endPoint.transform =
                EditorGUILayout.ObjectField("End Point", endPoint.transform, typeof(Transform), true) as Transform;
            if (EditorGUI.EndChangeCheck())
            {
                Undo.RecordObject(_curve, "Change end point");
                EditorUtility.SetDirty(_curve);
                endPoint.SetRelativeTangent(_curve.points[_curve.points.Count - 2].Position);
            }

            AddNewPoint();
            InspectorCurrentPoint();

            EditorGUILayout.LabelField("Debug", EditorStyles.boldLabel);
            DrawDefaultInspector();
        }
Esempio n. 2
0
        public override void OnNodeEnable()
        {
            node = target as NodeCurve;

            delayedChanges.BindCallback(notifyKey, (unused) => {
                NotifyReload();
                node.CurveTerrain();
                node.sCurve.SetAnimationCurve(node.curve);
            });
        }
Esempio n. 3
0
    public static NodeBase createNewUnaryOperator(UnaryOperatorType t)
    {
        NodeBase rlt = null;

        if (t == UnaryOperatorType.Curve)
        {
            rlt = new NodeCurve();
        }
        else if (t == UnaryOperatorType.Normal)
        {
            rlt = new NodeNormal();
        }
        else if (t == UnaryOperatorType.Erosion)
        {
            rlt = new NodeErosion();
        }
        rlt.initInput();
        rlt.guid = Guid.NewGuid().ToString();
        return(rlt);
    }
        private void OnSceneGUI()
        {
            _curve = target as NodeCurve;
            if (!_curve.Ready)
            {
                return;
            }

            for (var i = 0; i < _curve.points.Count - 1; i += 1)
            {
                var startPoint = _curve.points[i];
                if (i == 0)
                {
                    DrawPoint(i, startPoint);
                }
                var startTangent = DrawTangentPoint(i, TangentPoint.B);

                var endPoint = _curve.points[i + 1];
                DrawPoint(i + 1, endPoint);
                var endTangent = DrawTangentPoint(i + 1, TangentPoint.A);

                Handles.DrawBezier(startPoint.GlobalPosition, endPoint.GlobalPosition, startTangent, endTangent, Color.white, null, 2f);
            }
        }