@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
JavaScript
;
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;