let proto = cc.Graphics.__assembler__.prototype;

let _init = proto.init;
proto.init = function (renderComp) {
    _init.call(this, renderComp);
    this.ignoreOpacityFlag();
}

proto.genBuffer = function (graphics, cverts) {
    let buffers = this.getBuffers(); 
    let buffer = buffers[this._bufferOffset];
    let meshbuffer = buffer.meshbuffer;

    meshbuffer.requestStatic(cverts, cverts*3);
    this._buffer = buffer;

    meshbuffer.setNativeAssembler(this);
    return buffer;
}

let _stroke = proto.stroke;
proto.stroke = function (graphics) {
    _stroke.call(this, graphics);
    let buffer = this._buffer;
    buffer.meshbuffer.used(buffer.vertexStart, buffer.indiceStart);
}

let _fill = proto.fill;
proto.fill = function (graphics) {
    _fill.call(this, graphics);
    let buffer = this._buffer;
    buffer.meshbuffer.used(buffer.vertexStart, buffer.indiceStart);
}

let _updateIADatas = proto.updateIADatas;
proto.updateIADatas = function (iaIndex, meshIndex) {
    _updateIADatas.call(this, iaIndex, meshIndex);
    // Reset vertexStart and indiceStart when buffer is switched.
    this._buffer.vertexStart = 0;
    this._buffer.indiceStart = 0;
}