@gamelearn/arcade-components 0.15.0 → 0.15.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/arcade-render/scene/ConfigController.js +8 -69
- package/dist/components/arcade-render/scene/useCameraPan.js +109 -0
- package/dist/components/pattern-component/components/PatternComponent.js +56 -0
- package/dist/components/pattern-component/index.js +13 -0
- package/dist/components/pattern-component/mocks/mockForStory.js +35 -0
- package/package.json +1 -1
|
@@ -9,9 +9,9 @@ var _react = require("react");
|
|
|
9
9
|
|
|
10
10
|
var _fiber = require("@react-three/fiber");
|
|
11
11
|
|
|
12
|
-
var
|
|
12
|
+
var _useCameraPan = _interopRequireDefault(require("./useCameraPan"));
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
15
15
|
|
|
16
16
|
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
17
17
|
|
|
@@ -25,89 +25,28 @@ function _iterableToArrayLimit(arr, i) { var _i = arr && (typeof Symbol !== "und
|
|
|
25
25
|
|
|
26
26
|
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
27
27
|
|
|
28
|
-
var STD_RESOLUTION = 16 / 9;
|
|
29
|
-
var MOTION_LIMITER = 3.5;
|
|
30
|
-
var SPEED = 3;
|
|
31
|
-
|
|
32
28
|
var ConfigController = function ConfigController(_ref) {
|
|
33
29
|
var current = _ref.current;
|
|
34
30
|
|
|
35
31
|
var _useThree = (0, _fiber.useThree)(function (state) {
|
|
36
|
-
return [state.gl, state.scene, state.
|
|
32
|
+
return [state.gl, state.scene, state.invalidate];
|
|
37
33
|
}),
|
|
38
|
-
_useThree2 = _slicedToArray(_useThree,
|
|
34
|
+
_useThree2 = _slicedToArray(_useThree, 3),
|
|
39
35
|
gl = _useThree2[0],
|
|
40
36
|
scene = _useThree2[1],
|
|
41
|
-
|
|
42
|
-
invalidate = _useThree2[3];
|
|
43
|
-
|
|
44
|
-
var cameraRotation = (0, _react.useRef)({
|
|
45
|
-
left: 0,
|
|
46
|
-
center: 0,
|
|
47
|
-
right: 0
|
|
48
|
-
});
|
|
49
|
-
var movingCamera = (0, _react.useRef)(false);
|
|
50
|
-
var windowSize = (0, _useWindowSize.useWindowSize)();
|
|
51
|
-
var setCameraRotationView = (0, _react.useCallback)(function () {
|
|
52
|
-
var ratio = window.innerWidth / window.innerHeight;
|
|
53
|
-
|
|
54
|
-
if (ratio >= STD_RESOLUTION) {
|
|
55
|
-
return;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
var threshold = (STD_RESOLUTION - ratio) / MOTION_LIMITER;
|
|
37
|
+
invalidate = _useThree2[2];
|
|
59
38
|
|
|
60
|
-
|
|
61
|
-
var euler = camera.rotation.clone();
|
|
62
|
-
cameraRotation.current = {
|
|
63
|
-
center: (0, _helpers.roundFloat)(euler.y, 3),
|
|
64
|
-
left: (0, _helpers.roundFloat)(euler.y - threshold, 3),
|
|
65
|
-
right: (0, _helpers.roundFloat)(euler.y + threshold, 3)
|
|
66
|
-
};
|
|
67
|
-
}
|
|
68
|
-
}, [camera]);
|
|
69
|
-
var moveByStep = (0, _react.useCallback)(function (goal, current, increment, delta) {
|
|
70
|
-
var acceleration = delta * SPEED;
|
|
71
|
-
|
|
72
|
-
if (increment && goal + acceleration > current) {
|
|
73
|
-
camera.rotation.y += acceleration;
|
|
74
|
-
} else if (!increment && goal + acceleration < current) {
|
|
75
|
-
camera.rotation.y -= acceleration;
|
|
76
|
-
} else {
|
|
77
|
-
movingCamera.current = false;
|
|
78
|
-
return;
|
|
79
|
-
}
|
|
80
|
-
}, [camera]);
|
|
81
|
-
var moveCamera = (0, _react.useCallback)(function (delta) {
|
|
82
|
-
var goal = cameraRotation.current[current.lookingSide];
|
|
83
|
-
var value = (0, _helpers.roundFloat)(camera.rotation.y, 3);
|
|
84
|
-
var increment = goal > value;
|
|
85
|
-
|
|
86
|
-
if (camera.rotation) {
|
|
87
|
-
moveByStep(goal, value, increment, delta);
|
|
88
|
-
}
|
|
89
|
-
}, [camera.rotation, current.lookingSide, moveByStep]);
|
|
39
|
+
(0, _useCameraPan.default)(current.lookingSide);
|
|
90
40
|
(0, _fiber.useFrame)(function (_ref2) {
|
|
91
41
|
var gl = _ref2.gl,
|
|
92
42
|
scene = _ref2.scene,
|
|
93
|
-
camera = _ref2.camera
|
|
94
|
-
clock = _ref2.clock;
|
|
43
|
+
camera = _ref2.camera;
|
|
95
44
|
gl.render(scene, camera);
|
|
96
45
|
|
|
97
|
-
if (movingCamera.current) {
|
|
98
|
-
moveCamera(clock.getDelta());
|
|
99
|
-
}
|
|
100
|
-
|
|
101
46
|
if (!current.animate) {
|
|
102
47
|
invalidate();
|
|
103
48
|
}
|
|
104
|
-
}, 1);
|
|
105
|
-
(0, _react.useEffect)(function () {
|
|
106
|
-
movingCamera.current = true;
|
|
107
|
-
}, [current.lookingSide]);
|
|
108
|
-
(0, _react.useEffect)(function () {
|
|
109
|
-
setCameraRotationView();
|
|
110
|
-
}, [windowSize, setCameraRotationView]); // settings
|
|
49
|
+
}, 1); // settings
|
|
111
50
|
|
|
112
51
|
(0, _react.useEffect)(function () {
|
|
113
52
|
gl.shadowMap.enabled = current.shadows;
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
var _fiber = require("@react-three/fiber");
|
|
9
|
+
|
|
10
|
+
var _react = require("react");
|
|
11
|
+
|
|
12
|
+
var _three = require("three");
|
|
13
|
+
|
|
14
|
+
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
15
|
+
|
|
16
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
17
|
+
|
|
18
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
19
|
+
|
|
20
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
21
|
+
|
|
22
|
+
function _iterableToArrayLimit(arr, i) { var _i = arr && (typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]); if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
|
|
23
|
+
|
|
24
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
25
|
+
|
|
26
|
+
var STD_RESOLUTION = 16 / 9;
|
|
27
|
+
var MOTION_LIMITER = 3.5;
|
|
28
|
+
var SPEED = 50;
|
|
29
|
+
var quad = new _three.Quaternion();
|
|
30
|
+
var yAxis = new _three.Vector3(0, 1, 0);
|
|
31
|
+
|
|
32
|
+
var rotateQuatY = function rotateQuatY(current, amount) {
|
|
33
|
+
var result = current.clone();
|
|
34
|
+
quad.setFromAxisAngle(yAxis, amount);
|
|
35
|
+
return result.multiply(quad);
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
var useCameraPan = function useCameraPan(lookingSide) {
|
|
39
|
+
var _useState = (0, _react.useState)(false),
|
|
40
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
41
|
+
cameraLoaded = _useState2[0],
|
|
42
|
+
setCameraLoaded = _useState2[1];
|
|
43
|
+
|
|
44
|
+
var movingCamera = (0, _react.useRef)(false);
|
|
45
|
+
|
|
46
|
+
var _useThree = (0, _fiber.useThree)(function (state) {
|
|
47
|
+
return [state.camera, state.viewport];
|
|
48
|
+
}),
|
|
49
|
+
_useThree2 = _slicedToArray(_useThree, 2),
|
|
50
|
+
camera = _useThree2[0],
|
|
51
|
+
viewport = _useThree2[1];
|
|
52
|
+
|
|
53
|
+
var cameraRotation = (0, _react.useRef)({
|
|
54
|
+
left: camera.quaternion,
|
|
55
|
+
center: camera.quaternion,
|
|
56
|
+
right: camera.quaternion
|
|
57
|
+
});
|
|
58
|
+
var setCameraRotationView = (0, _react.useCallback)(function () {
|
|
59
|
+
if (viewport.aspect >= STD_RESOLUTION) {
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
var threshold = (STD_RESOLUTION - viewport.aspect) / MOTION_LIMITER;
|
|
64
|
+
|
|
65
|
+
if (camera.rotation) {
|
|
66
|
+
cameraRotation.current = {
|
|
67
|
+
center: camera.quaternion.clone(),
|
|
68
|
+
left: rotateQuatY(camera.quaternion, threshold),
|
|
69
|
+
right: rotateQuatY(camera.quaternion, -threshold)
|
|
70
|
+
};
|
|
71
|
+
movingCamera.current = true;
|
|
72
|
+
}
|
|
73
|
+
}, [camera, viewport.aspect]);
|
|
74
|
+
var moveCamera = (0, _react.useCallback)(function (delta) {
|
|
75
|
+
var goal = cameraRotation.current[lookingSide];
|
|
76
|
+
|
|
77
|
+
if (camera.quaternion) {
|
|
78
|
+
if (!camera.quaternion.equals(goal)) {
|
|
79
|
+
camera.quaternion.rotateTowards(goal, delta * SPEED);
|
|
80
|
+
} else {
|
|
81
|
+
movingCamera.current = false;
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}, [camera, lookingSide]);
|
|
86
|
+
(0, _fiber.useFrame)(function (_ref) {
|
|
87
|
+
var clock = _ref.clock;
|
|
88
|
+
|
|
89
|
+
if (movingCamera.current) {
|
|
90
|
+
moveCamera(clock.getDelta());
|
|
91
|
+
}
|
|
92
|
+
}, 1);
|
|
93
|
+
(0, _react.useEffect)(function () {
|
|
94
|
+
if (camera.defaultCamera) {
|
|
95
|
+
setCameraLoaded(true);
|
|
96
|
+
}
|
|
97
|
+
}, [camera]);
|
|
98
|
+
(0, _react.useEffect)(function () {
|
|
99
|
+
movingCamera.current = true;
|
|
100
|
+
}, [lookingSide]);
|
|
101
|
+
(0, _react.useEffect)(function () {
|
|
102
|
+
if (cameraLoaded) {
|
|
103
|
+
setCameraRotationView();
|
|
104
|
+
}
|
|
105
|
+
}, [viewport, cameraLoaded, setCameraRotationView]);
|
|
106
|
+
};
|
|
107
|
+
|
|
108
|
+
var _default = useCameraPan;
|
|
109
|
+
exports.default = _default;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
var _react = _interopRequireDefault(require("react"));
|
|
9
|
+
|
|
10
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
|
+
|
|
12
|
+
var PatternComponent = function PatternComponent(_ref) {
|
|
13
|
+
var img = _ref.img,
|
|
14
|
+
name = _ref.name,
|
|
15
|
+
viewed = _ref.viewed,
|
|
16
|
+
emitEvent = _ref.emitEvent;
|
|
17
|
+
|
|
18
|
+
if (!img) {
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
var imgUrl = img.url;
|
|
23
|
+
|
|
24
|
+
var close = function close() {
|
|
25
|
+
emitEvent({
|
|
26
|
+
type: 'emitSavePattern',
|
|
27
|
+
payload: {
|
|
28
|
+
imgId: img.imgId,
|
|
29
|
+
name: name,
|
|
30
|
+
viewed: true
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
return /*#__PURE__*/_react.default.createElement("div", {
|
|
36
|
+
className: viewed ? 'notes--results' : 'readings--container'
|
|
37
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
38
|
+
className: viewed ? 'notes--results__text' : 'readings readings--image'
|
|
39
|
+
}, imgUrl && /*#__PURE__*/_react.default.createElement("img", {
|
|
40
|
+
src: imgUrl,
|
|
41
|
+
alt: "pattern"
|
|
42
|
+
}), !viewed ? /*#__PURE__*/_react.default.createElement("div", {
|
|
43
|
+
className: "position--absolute top right"
|
|
44
|
+
}, /*#__PURE__*/_react.default.createElement("button", {
|
|
45
|
+
type: "button",
|
|
46
|
+
className: "gat--btn__round",
|
|
47
|
+
onClick: function onClick() {
|
|
48
|
+
return close();
|
|
49
|
+
}
|
|
50
|
+
}, /*#__PURE__*/_react.default.createElement("span", {
|
|
51
|
+
className: "icon-close"
|
|
52
|
+
}))) : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null)));
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
var _default = PatternComponent;
|
|
56
|
+
exports.default = _default;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
var _PatternComponent = _interopRequireDefault(require("./components/PatternComponent"));
|
|
9
|
+
|
|
10
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
|
+
|
|
12
|
+
var _default = _PatternComponent.default;
|
|
13
|
+
exports.default = _default;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.mockProps2 = exports.mockProps = void 0;
|
|
7
|
+
|
|
8
|
+
var emitEvent = function emitEvent() {
|
|
9
|
+
console.log('Emit event called');
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
var mockProps = {
|
|
13
|
+
emitEvent: emitEvent,
|
|
14
|
+
img: {
|
|
15
|
+
imgId: 'alfalfa',
|
|
16
|
+
url: 'https://min.int.gamelearn.io/cooked.gl-lms-storage/clients/58dccfba26561500117caf53/image/603fb8b1901f3e001238e297/gif.gif',
|
|
17
|
+
resourceId: '5e79e0c8f5b3a6000fd81472'
|
|
18
|
+
},
|
|
19
|
+
imgName: 'Hand gif',
|
|
20
|
+
name: 'pika pika pikachu',
|
|
21
|
+
nodeId: 'node'
|
|
22
|
+
};
|
|
23
|
+
exports.mockProps = mockProps;
|
|
24
|
+
var mockProps2 = {
|
|
25
|
+
emitEvent: emitEvent,
|
|
26
|
+
img: {
|
|
27
|
+
imgId: 'space',
|
|
28
|
+
url: 'https://min.gamelearn.io/css-resources/gamelearn/resources/cosmos-bg.jpg',
|
|
29
|
+
resourceId: '5e79e0c8f5b3a6000fd81472'
|
|
30
|
+
},
|
|
31
|
+
imgName: 'Hand gif',
|
|
32
|
+
name: 'el espacio la ultima frontera',
|
|
33
|
+
nodeId: 'node2'
|
|
34
|
+
};
|
|
35
|
+
exports.mockProps2 = mockProps2;
|