UNPKG

@bezlepkin/nativescript-ar

Version:

NativeScript Augmented Reality plugin. ARKit on iOS and (with the help of Sceneform) ARCore on Android.

45 lines (44 loc) 2.01 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ARModel = void 0; const core_1 = require("@nativescript/core"); const arcommon_1 = require("./arcommon"); const arcommongeometry_1 = require("./arcommongeometry"); class ARModel extends arcommongeometry_1.ARCommonGeometryNode { static create(options, fragment) { return new Promise((resolve, reject) => { let model; const context = core_1.Utils.ad.getApplicationContext(); if (options.name.indexOf(".glb") > 0 || options.name.indexOf(".gltf") > 0) { model = ARModel.getGLTFSource(options.name); } else { model = android.net.Uri.parse(options.name); } com.google.ar.sceneform.rendering.ModelRenderable.builder() .setSource(context, model) .build() .thenAccept(new java.util.function.Consumer({ accept: renderable => { const transformableNode = arcommon_1.ARCommonNode.createNode(options, fragment); transformableNode.setRenderable(renderable); resolve(new ARModel(options, transformableNode)); } })) .exceptionally(new java.util.function.Function({ apply: error => { console.error("failed loading '" + options.name + "': " + error); reject(error); } })); }); } static getGLTFSource(asset) { const context = core_1.Utils.ad.getApplicationContext(); const type = (asset.indexOf(".glb") > 0) ? com.google.ar.sceneform.assets.RenderableSource.SourceType.GLB : com.google.ar.sceneform.assets.RenderableSource.SourceType.GLTF2; return com.google.ar.sceneform.assets.RenderableSource.builder().setSource(context, android.net.Uri.parse(asset), type).build(); } } exports.ARModel = ARModel;