wonder.js
Version:
124 lines (111 loc) • 6.1 kB
JavaScript
;
var Caml_option = require("bs-platform/lib/js/caml_option.js");
var Log$WonderLog = require("wonder-log/lib/js/src/Log.js");
var Contract$WonderLog = require("wonder-log/lib/js/src/Contract.js");
var ArrayService$Wonderjs = require("../../../atom/ArrayService.js");
var StateDataMain$Wonderjs = require("../../../state/main/data/StateDataMain.js");
var IsDebugMainService$Wonderjs = require("../../../state/main/state/IsDebugMainService.js");
var MutableSparseMapService$WonderCommonlib = require("wonder-commonlib/lib/js/src/MutableSparseMapService.js");
function _getBufferAndSetBufferMap(gl, bufferPool) {
var match = bufferPool.pop();
if (match !== undefined) {
return match;
} else {
return gl.createBuffer();
}
}
function getArrayBuffer(gl, param) {
return _getBufferAndSetBufferMap(gl, param[/* vertexArrayBufferPool */5]);
}
function getElementArrayBuffer(gl, param) {
return _getBufferAndSetBufferMap(gl, param[/* elementArrayBufferPool */6]);
}
function getInstanceBuffer(gl, param) {
return _getBufferAndSetBufferMap(gl, param[/* matrixInstanceBufferPool */7]);
}
function addAllBufferToPool(param) {
var matrixInstanceBufferPool = param[/* matrixInstanceBufferPool */7];
var elementArrayBufferPool = param[/* elementArrayBufferPool */6];
var vertexArrayBufferPool = param[/* vertexArrayBufferPool */5];
MutableSparseMapService$WonderCommonlib.forEachValid((function (buffer) {
vertexArrayBufferPool.push(buffer);
return /* () */0;
}), param[/* geometryVertexBufferMap */0]);
MutableSparseMapService$WonderCommonlib.forEachValid((function (buffer) {
vertexArrayBufferPool.push(buffer);
return /* () */0;
}), param[/* geometryTexCoordBufferMap */1]);
MutableSparseMapService$WonderCommonlib.forEachValid((function (buffer) {
vertexArrayBufferPool.push(buffer);
return /* () */0;
}), param[/* geometryNormalBufferMap */2]);
MutableSparseMapService$WonderCommonlib.forEachValid((function (buffer) {
elementArrayBufferPool.push(buffer);
return /* () */0;
}), param[/* geometryElementArrayBufferMap */3]);
MutableSparseMapService$WonderCommonlib.forEachValid((function (buffer) {
matrixInstanceBufferPool.push(buffer);
return /* () */0;
}), param[/* matrixInstanceBufferMap */4]);
return /* tuple */[
vertexArrayBufferPool,
elementArrayBufferPool,
matrixInstanceBufferPool
];
}
var _getBufferFromBufferMap = MutableSparseMapService$WonderCommonlib.get;
function _addBufferToPool(geometryIndex, bufferMap, pool) {
var match = MutableSparseMapService$WonderCommonlib.get(geometryIndex, bufferMap);
if (match !== undefined) {
return ArrayService$Wonderjs.push(Caml_option.valFromOption(match), pool);
} else {
return pool;
}
}
function addGeometryBufferToPool(geometryIndex, record) {
return /* record */[
/* geometryVertexBufferMap */record[/* geometryVertexBufferMap */0],
/* geometryTexCoordBufferMap */record[/* geometryTexCoordBufferMap */1],
/* geometryNormalBufferMap */record[/* geometryNormalBufferMap */2],
/* geometryElementArrayBufferMap */record[/* geometryElementArrayBufferMap */3],
/* matrixInstanceBufferMap */record[/* matrixInstanceBufferMap */4],
/* vertexArrayBufferPool */_addBufferToPool(geometryIndex, record[/* geometryNormalBufferMap */2], _addBufferToPool(geometryIndex, record[/* geometryTexCoordBufferMap */1], _addBufferToPool(geometryIndex, record[/* geometryVertexBufferMap */0], record[/* vertexArrayBufferPool */5]))),
/* elementArrayBufferPool */_addBufferToPool(geometryIndex, record[/* geometryElementArrayBufferMap */3], record[/* elementArrayBufferPool */6]),
/* matrixInstanceBufferPool */record[/* matrixInstanceBufferPool */7]
];
}
function _unsafeGetBufferFromBufferMap(index, bufferMap) {
return Contract$WonderLog.ensureCheck((function (r) {
return Contract$WonderLog.test(Log$WonderLog.buildAssertMessage("buffer exist in bufferMap", "not"), (function (param) {
return Contract$WonderLog.assertTrue(MutableSparseMapService$WonderCommonlib.has(index, bufferMap));
}));
}), IsDebugMainService$Wonderjs.getIsDebug(StateDataMain$Wonderjs.stateData), MutableSparseMapService$WonderCommonlib.unsafeGet(index, bufferMap));
}
function addInstanceBufferToPool(sourceInstanceIndex, record) {
var match = MutableSparseMapService$WonderCommonlib.get(sourceInstanceIndex, record[/* matrixInstanceBufferMap */4]);
if (match !== undefined) {
return /* record */[
/* geometryVertexBufferMap */record[/* geometryVertexBufferMap */0],
/* geometryTexCoordBufferMap */record[/* geometryTexCoordBufferMap */1],
/* geometryNormalBufferMap */record[/* geometryNormalBufferMap */2],
/* geometryElementArrayBufferMap */record[/* geometryElementArrayBufferMap */3],
/* matrixInstanceBufferMap */record[/* matrixInstanceBufferMap */4],
/* vertexArrayBufferPool */record[/* vertexArrayBufferPool */5],
/* elementArrayBufferPool */record[/* elementArrayBufferPool */6],
/* matrixInstanceBufferPool */ArrayService$Wonderjs.push(Caml_option.valFromOption(match), record[/* matrixInstanceBufferPool */7])
];
} else {
return record;
}
}
exports._getBufferAndSetBufferMap = _getBufferAndSetBufferMap;
exports.getArrayBuffer = getArrayBuffer;
exports.getElementArrayBuffer = getElementArrayBuffer;
exports.getInstanceBuffer = getInstanceBuffer;
exports.addAllBufferToPool = addAllBufferToPool;
exports._getBufferFromBufferMap = _getBufferFromBufferMap;
exports._addBufferToPool = _addBufferToPool;
exports.addGeometryBufferToPool = addGeometryBufferToPool;
exports._unsafeGetBufferFromBufferMap = _unsafeGetBufferFromBufferMap;
exports.addInstanceBufferToPool = addInstanceBufferToPool;
/* Log-WonderLog Not a pure module */