Пример #1
0
    /// <summary>
    /// Generate some curve demo data
    /// </summary>
    void DemoData1()
    {
        var curve = new BezierCurveData();

        curve.points = new Vector3[4]
        {
            new Vector3(0, 0, 0),
            new Vector3(1, 0, 0),
            new Vector3(2, 2, 2),
            new Vector3(4, 4, 4)
        };
        curveDatas.Add(curve);
    }
Пример #2
0
    private Vector3 GetPointOnBezierCurve(int pCurveIndex, float pPercentThroughCurve)
    {
        Vector3         positionOnCurve;
        BezierCurveData currentCurve       = bezierCurveControlPoints[pCurveIndex];
        float           percentLeftOnCurve = 1 - pPercentThroughCurve;

        //formula for getting a position on a bezier curve
        positionOnCurve = Mathf.Pow(percentLeftOnCurve, 3) * currentCurve.controlPoints[0].position +
                          3 * Mathf.Pow(percentLeftOnCurve, 2) * pPercentThroughCurve * currentCurve.controlPoints[1].position +
                          3 * percentLeftOnCurve * Mathf.Pow(pPercentThroughCurve, 2) * currentCurve.controlPoints[2].position +
                          Mathf.Pow(pPercentThroughCurve, 3) * currentCurve.controlPoints[3].position;

        return(positionOnCurve);
    }
Пример #3
0
    public void Load(BezierCurveData bezierCurveData)
    {
        List <BezierPoint> bezierPoints = bezierCurveData.points;

        for (int i = 0; i < bezierPoints.Count; i++)
        {
            AddAnchorPoint(bezierPoints [i]);
        }

        connectedCurve = bezierCurveData.connectedCurve;
        handleSize     = bezierCurveData.handleSize;
        snapSize       = bezierCurveData.snapSize;
        sampleRate     = bezierCurveData.sampleRate;
    }
Пример #4
0
    public BezierCurveData Save(string assetPath)
    {
        BezierCurveData bezierCurveData = ScriptableObject.CreateInstance <BezierCurveData> ();

        bezierCurveData.points         = new List <BezierPoint> (points);
        bezierCurveData.connectedCurve = connectedCurve;
        bezierCurveData.handleSize     = handleSize;
        bezierCurveData.snapSize       = snapSize;
        bezierCurveData.sampleRate     = sampleRate;

        AssetDatabase.CreateAsset(bezierCurveData, assetPath);
        AssetDatabase.SaveAssets();
        AssetDatabase.Refresh();

        return(AssetDatabase.LoadAssetAtPath <BezierCurveData> (assetPath));
    }
Пример #5
0
    private void DrawInspectorSettings()
    {
        GUIStyle style = new GUIStyle();

        style.fontStyle = FontStyle.Bold;

        showSettings = EditorGUILayout.Foldout(showSettings, "Show settings");
        if (showSettings)
        {
            GUILayout.Label("Debug", style);
            GUILayout.Label(string.Format("Points on curve: {0}", numberOfSampledPointsOnCurve));
            GUILayout.BeginHorizontal();
            showCurve        = GUILayout.Toggle(showCurve, "Curve");
            showSamplePoints = GUILayout.Toggle(showSamplePoints, "Sample points");
            showNormals      = GUILayout.Toggle(showNormals, "Normals");
            showTangents     = GUILayout.Toggle(showTangents, "Tangents");
            GUILayout.EndHorizontal();
            GUILayout.Label("Load/Save", style);
            EditorGUILayout.BeginHorizontal();
            bezierCurveData = (BezierCurveData)EditorGUILayout.ObjectField("Bezier curve", bezierCurveData, typeof(BezierCurveData), false);
            if (GUILayout.Button("Load", GUILayout.Width(40), GUILayout.Height(15)))
            {
                LoadCurve(bezierCurveData);
            }
            EditorGUILayout.EndHorizontal();

            EditorGUILayout.BeginHorizontal();
            bezierCurveDataName = EditorGUILayout.TextField("Bezier curve name", bezierCurveDataName);
            if (GUILayout.Button("Save", GUILayout.Width(40), GUILayout.Height(15)))
            {
                SaveCurve(bezierCurveDataName);
            }
            EditorGUILayout.EndHorizontal();

            GUILayout.Label("Settings", style);
            DrawDefaultInspector();
        }
    }
    /// <summary>
    /// Generate some curve demo data
    /// </summary>
    void DemoData1()
    {
        var curve = new BezierCurveData();

        curve.points = new Vector3[4]
        {
            new Vector3(0, 0, 0),
            new Vector3(10, 0, 0),
            new Vector3(20, 5f, 10),
            new Vector3(30, 10, 30)
        };
        curveDatas.Add(curve);

        curve        = new BezierCurveData();
        curve.points = new Vector3[4]
        {
            new Vector3(30, 10, 30),
            new Vector3(40, 20, 40),
            new Vector3(40, 20, 40),
            new Vector3(60, -10, 100)
        };
        curveDatas.Add(curve);
    }
Пример #7
0
    private void LoadCurve(BezierCurveData bezierCurveData)
    {
        RemoveAllPoints();

        bezierCurve.Load(bezierCurveData);
    }