UNPKG

wonder.js

Version:
124 lines (111 loc) 6.1 kB
'use strict'; 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 */