(function (global, factory) { if (typeof define === "function" && define.amd) { define(["exports", "three"], factory); } else if (typeof exports !== "undefined") { factory(exports, require("three")); } else { var mod = { exports: {} }; factory(mod.exports, global.three); global.XRHandPrimitiveModel = mod.exports; } })(typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : this, function (_exports, _three) { "use strict"; Object.defineProperty(_exports, "__esModule", { value: true }); _exports.XRHandPrimitiveModel = void 0; function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } var _matrix = new _three.Matrix4(); var _vector = new _three.Vector3(); var XRHandPrimitiveModel = /*#__PURE__*/function () { function XRHandPrimitiveModel(handModel, controller, path, handedness, options) { _classCallCheck(this, XRHandPrimitiveModel); this.controller = controller; this.handModel = handModel; this.envMap = null; var geometry; if (!options || !options.primitive || options.primitive === 'sphere') { geometry = new _three.SphereGeometry(1, 10, 10); } else if (options.primitive === 'box') { geometry = new _three.BoxGeometry(1, 1, 1); } var material = new _three.MeshStandardMaterial(); this.handMesh = new _three.InstancedMesh(geometry, material, 30); this.handMesh.instanceMatrix.setUsage(_three.DynamicDrawUsage); // will be updated every frame this.handMesh.castShadow = true; this.handMesh.receiveShadow = true; this.handModel.add(this.handMesh); this.joints = ['wrist', 'thumb-metacarpal', 'thumb-phalanx-proximal', 'thumb-phalanx-distal', 'thumb-tip', 'index-finger-metacarpal', 'index-finger-phalanx-proximal', 'index-finger-phalanx-intermediate', 'index-finger-phalanx-distal', 'index-finger-tip', 'middle-finger-metacarpal', 'middle-finger-phalanx-proximal', 'middle-finger-phalanx-intermediate', 'middle-finger-phalanx-distal', 'middle-finger-tip', 'ring-finger-metacarpal', 'ring-finger-phalanx-proximal', 'ring-finger-phalanx-intermediate', 'ring-finger-phalanx-distal', 'ring-finger-tip', 'pinky-finger-metacarpal', 'pinky-finger-phalanx-proximal', 'pinky-finger-phalanx-intermediate', 'pinky-finger-phalanx-distal', 'pinky-finger-tip']; } _createClass(XRHandPrimitiveModel, [{ key: "updateMesh", value: function updateMesh() { var defaultRadius = 0.008; var joints = this.controller.joints; var count = 0; for (var i = 0; i < this.joints.length; i++) { var joint = joints[this.joints[i]]; if (joint.visible) { _vector.setScalar(joint.jointRadius || defaultRadius); _matrix.compose(joint.position, joint.quaternion, _vector); this.handMesh.setMatrixAt(i, _matrix); count++; } } this.handMesh.count = count; this.handMesh.instanceMatrix.needsUpdate = true; } }]); return XRHandPrimitiveModel; }(); _exports.XRHandPrimitiveModel = XRHandPrimitiveModel; });