API Docs for:

File: /home/lindsay/xeolabs/xeogl-next/xeogl/examples/js/helpers/splineCurveHelper.js

/**
 Shows the shape and control points of {{#crossLink "SplineCurve"}}{{/crossLink}}

 @class SplineCurveHelper
 @module meshes
 @extends Component
 */
xeogl.SplineCurveHelper = class xeoglSplineCurveHelper extends xeogl.Component {

    init(cfg) {
        super.init(cfg);
        this._divisions = 100;

        this._splineCurve = cfg.splineCurve;
        if (this._splineCurve) {
            const self = this;
            this._onPathCurves = this._splineCurve.on("curves", () => {
                self._needUpdate();
            });
        }
    }

    _update() {
        if (this._line) {
            this._line.geometry.destroy();
            this._line.material.destroy();
            this._line.destroy();
        }
        const splineCurve = this._splineCurve;
        if (!splineCurve) {
            return;
        }
        const points = splineCurve.getPoints(this._divisions);
        const positions = [];
        let point;
        for (var i = 0, len = points.length; i < len; i++) {
            point = points[i];
            positions.push(point[0]);
            positions.push(point[1]);
            positions.push(point[2]);
        }
        const indices = [];
        for (var i = 0, len = points.length - 1; i < len; i++) {
            indices.push(i);
            indices.push(i + 1);
        }
        this._line = new xeogl.Mesh(this, {
            geometry: new xeogl.Geometry(this, {
                primitive: "lines",
                positions: positions,
                indices: indices
            }),
            material: new xeogl.PhongMaterial(this, {
                diffuse: [1, 0, 0]
            })
        });
    }

    /**
     The SplineCurve for this SplineCurveHelper.

     @property splinecurve
     @type {SplineCurve}
     @final
     */

    get splineCurve() {
        return this._splineCurve;
    }

    destroy() {
        if (this._splineCurve) {
            this._splineCurve.off(this._onPathCurves);
        }
        super.destroy();
    }
};