Skip to content

Commit

Permalink
feat(jiehuo): JieHuoAPI add loadImageDataArr api
Browse files Browse the repository at this point in the history
  • Loading branch information
yyc-git committed May 14, 2019
1 parent 6252277 commit c7ec5b9
Show file tree
Hide file tree
Showing 2 changed files with 52 additions and 2 deletions.
4 changes: 4 additions & 0 deletions src/Index.re
Original file line number Diff line number Diff line change
Expand Up @@ -492,6 +492,10 @@ let clearIMGUIFunc = ManageIMGUIAPI.clearIMGUIFunc;

let setIMGUIFunc = ManageIMGUIAPI.setIMGUIFunc;

let loadImageDataArr = JieHuoAPI.loadImageDataArr;

let loadImage = JieHuoAPI.loadImage;

let getIntersectedPointWithMesh = JieHuoAPI.getIntersectedPointWithMesh;

let isIntersectWithMesh = JieHuoAPI.isIntersectWithMesh;
Expand Down
50 changes: 48 additions & 2 deletions src/api/jiehuo/JieHuoAPI.re
Original file line number Diff line number Diff line change
@@ -1,8 +1,13 @@
/* TODO remove */

open WonderBsMost;

open Js.Promise;

let createPerspectiveCameraRayFromEvent = RayUtils.createPerspectiveCameraRayFromEvent;

let checkIntersectMesh = (ray, geometry, localToWorldMatrixTypeArray, cull, state) =>
let checkIntersectMesh =
(ray, geometry, localToWorldMatrixTypeArray, cull, state) =>
MeshUtils.checkIntersectMesh(
ray,
(geometry, localToWorldMatrixTypeArray, cull),
Expand All @@ -12,4 +17,45 @@ let checkIntersectMesh = (ray, geometry, localToWorldMatrixTypeArray, cull, stat
let isIntersectWithMesh = checkResult => checkResult |> Js.Option.isSome;

let getIntersectedPointWithMesh = checkResult =>
checkResult |> OptionService.unsafeGet;
checkResult |> OptionService.unsafeGet;

let _loadImage:
(string, string, (. ImageType.image) => unit, (. 'exn) => unit) => unit = [%raw
(url, errorInfo, resolve, reject) => {|
var image = new Image();
image.src = url;
image.onload = (function () {
return resolve(image);
});
image.onerror = (function (e) {
console.trace();
return reject(new Error(errorInfo));
});
|}
];

let loadImage = (src, errorInfo) =>
make((~resolve, ~reject) => _loadImage(src, errorInfo, resolve, reject))
|> Most.fromPromise;

let loadImageDataArr = imageDataArr => {
let resultMap = WonderCommonlib.ImmutableHashMapService.createEmpty();

Most.mergeArray(
imageDataArr
|> Js.Array.map(((imageSrc, imageId)) =>
loadImage(imageSrc, {j|load image(src = $imageSrc) error|j})
|> Most.map(image => (image, imageId))
),
)
|> Most.reduce(
(resultMap, (image, imageId)) =>
resultMap
|> WonderCommonlib.ImmutableHashMapService.set(imageId, image),
WonderCommonlib.ImmutableHashMapService.createEmpty(),
);
};

0 comments on commit c7ec5b9

Please sign in to comment.