wonder.js
Version:
98 lines (89 loc) • 5.96 kB
JavaScript
;
var Caml_array = require("bs-platform/lib/js/caml_array.js");
var Log$WonderLog = require("wonder-log/lib/js/src/Log.js");
var BufferMeshRendererService$Wonderjs = require("../../../record/main/meshRenderer/BufferMeshRendererService.js");
var GameObjectMeshRendererService$Wonderjs = require("../../../record/main/meshRenderer/GameObjectMeshRendererService.js");
var RecordMeshRendererMainService$Wonderjs = require("./RecordMeshRendererMainService.js");
var MutableSparseMapService$WonderCommonlib = require("wonder-commonlib/lib/js/src/MutableSparseMapService.js");
var RenderArrayMeshRendererService$Wonderjs = require("../../../record/main/meshRenderer/RenderArrayMeshRendererService.js");
var GetIsActiveGameObjectMainService$Wonderjs = require("../gameObject/GetIsActiveGameObjectMainService.js");
var RenderArrayMeshRendererMainService$Wonderjs = require("./RenderArrayMeshRendererMainService.js");
var OperateTypeArrayAllMeshRendererService$Wonderjs = require("../../../record/all/meshRenderer/OperateTypeArrayAllMeshRendererService.js");
function getDrawMode(meshRenderer, state) {
return OperateTypeArrayAllMeshRendererService$Wonderjs.getDrawMode(meshRenderer, RecordMeshRendererMainService$Wonderjs.getRecord(state)[/* drawModes */2]);
}
function setDrawMode(meshRenderer, drawMode, state) {
var meshRendererRecord = RecordMeshRendererMainService$Wonderjs.getRecord(state);
var newrecord = Caml_array.caml_array_dup(state);
newrecord[/* meshRendererRecord */24] = /* record */[
/* index */meshRendererRecord[/* index */0],
/* buffer */meshRendererRecord[/* buffer */1],
/* drawModes */OperateTypeArrayAllMeshRendererService$Wonderjs.setDrawMode(meshRenderer, drawMode, meshRendererRecord[/* drawModes */2]),
/* isRenders */meshRendererRecord[/* isRenders */3],
/* basicMaterialRenderGameObjectMap */meshRendererRecord[/* basicMaterialRenderGameObjectMap */4],
/* lightMaterialRenderGameObjectMap */meshRendererRecord[/* lightMaterialRenderGameObjectMap */5],
/* gameObjectMap */meshRendererRecord[/* gameObjectMap */6],
/* disposedIndexArray */meshRendererRecord[/* disposedIndexArray */7]
];
return newrecord;
}
function getIsRender(meshRenderer, state) {
return OperateTypeArrayAllMeshRendererService$Wonderjs.getIsRender(meshRenderer, RecordMeshRendererMainService$Wonderjs.getRecord(state)[/* isRenders */3]) === BufferMeshRendererService$Wonderjs.getRender(/* () */0);
}
function _removeFromRenderGameObjectMap(meshRenderer, meshRendererRecord) {
return /* record */[
/* index */meshRendererRecord[/* index */0],
/* buffer */meshRendererRecord[/* buffer */1],
/* drawModes */meshRendererRecord[/* drawModes */2],
/* isRenders */meshRendererRecord[/* isRenders */3],
/* basicMaterialRenderGameObjectMap */MutableSparseMapService$WonderCommonlib.deleteVal(meshRenderer, meshRendererRecord[/* basicMaterialRenderGameObjectMap */4]),
/* lightMaterialRenderGameObjectMap */MutableSparseMapService$WonderCommonlib.deleteVal(meshRenderer, meshRendererRecord[/* lightMaterialRenderGameObjectMap */5]),
/* gameObjectMap */meshRendererRecord[/* gameObjectMap */6],
/* disposedIndexArray */meshRendererRecord[/* disposedIndexArray */7]
];
}
function _setIsRender(meshRenderer, isRender, state) {
var gameObjectRecord = state[/* gameObjectRecord */10];
var meshRendererRecord = RecordMeshRendererMainService$Wonderjs.getRecord(state);
var meshRendererRecord$1 = isRender ? RenderArrayMeshRendererMainService$Wonderjs.addToRenderGameObjectMap(meshRenderer, GameObjectMeshRendererService$Wonderjs.unsafeGetGameObject(meshRenderer, meshRendererRecord), meshRendererRecord, gameObjectRecord) : RenderArrayMeshRendererService$Wonderjs.removeFromRenderGameObjectMap(meshRenderer, meshRendererRecord);
var newrecord = Caml_array.caml_array_dup(state);
var match = isRender === true;
newrecord[/* meshRendererRecord */24] = /* record */[
/* index */meshRendererRecord$1[/* index */0],
/* buffer */meshRendererRecord$1[/* buffer */1],
/* drawModes */meshRendererRecord$1[/* drawModes */2],
/* isRenders */OperateTypeArrayAllMeshRendererService$Wonderjs.setIsRender(meshRenderer, match ? BufferMeshRendererService$Wonderjs.getRender(/* () */0) : BufferMeshRendererService$Wonderjs.getNotRender(/* () */0), meshRendererRecord$1[/* isRenders */3]),
/* basicMaterialRenderGameObjectMap */meshRendererRecord$1[/* basicMaterialRenderGameObjectMap */4],
/* lightMaterialRenderGameObjectMap */meshRendererRecord$1[/* lightMaterialRenderGameObjectMap */5],
/* gameObjectMap */meshRendererRecord$1[/* gameObjectMap */6],
/* disposedIndexArray */meshRendererRecord$1[/* disposedIndexArray */7]
];
return newrecord;
}
function setIsRender(meshRenderer, isRender, state) {
var match = isRender === getIsRender(meshRenderer, state);
if (match) {
return state;
} else {
var match$1 = GameObjectMeshRendererService$Wonderjs.getGameObject(meshRenderer, RecordMeshRendererMainService$Wonderjs.getRecord(state));
if (match$1 !== undefined) {
var gameObject = match$1;
var match$2 = !GetIsActiveGameObjectMainService$Wonderjs.unsafeGetIsActive(gameObject, state) && isRender;
if (match$2) {
Log$WonderLog.warn("meshRenderer:" + (String(meshRenderer) + (" -> gameObject:" + (String(gameObject) + " isn\'t active, can\'t set meshRenderer->isRender to true"))));
return state;
} else {
return _setIsRender(meshRenderer, isRender, state);
}
} else {
return _setIsRender(meshRenderer, isRender, state);
}
}
}
exports.getDrawMode = getDrawMode;
exports.setDrawMode = setDrawMode;
exports.getIsRender = getIsRender;
exports._removeFromRenderGameObjectMap = _removeFromRenderGameObjectMap;
exports._setIsRender = _setIsRender;
exports.setIsRender = setIsRender;
/* Log-WonderLog Not a pure module */