@realsee/dnalogel 0.1.2 → 0.1.3
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/data/XJ6NMLWnkAY3Rdx8.d.ts +843 -0
- package/data/XJ6NMLWnkAY3Rdx8.js +7987 -0
- package/data/jd6oMOzPxnQ3BvxY_B7yw51J9rXlhYhjhGTOgRVqu6WeEqjNX.d.ts +85 -0
- package/data/jd6oMOzPxnQ3BvxY_B7yw51J9rXlhYhjhGTOgRVqu6WeEqjNX.js +509 -0
- package/data/vLykj3NWrllMrG06.d.ts +2 -0
- package/data/vLykj3NWrllMrG06.js +197 -2
- package/data/zxMawr9raSg8LYjG.d.ts +53 -0
- package/data/zxMawr9raSg8LYjG.js +588 -0
- package/package.json +2 -2
- package/plugins/AutoPreloadPlugin/index.d.ts +23 -0
- package/plugins/AutoPreloadPlugin/index.js +85 -0
- package/plugins/CSS3DRenderPlugin/index.d.ts +3 -2
- package/plugins/CSS3DRenderPlugin/index.js +49 -44
- package/plugins/ModelChassisCompassPlugin/index.d.ts +7 -3
- package/plugins/ModelChassisCompassPlugin/index.js +13 -26
- package/plugins/ModelEntryDoorGuidePlugin/index.d.ts +13 -1
- package/plugins/ModelEntryDoorGuidePlugin/index.js +212 -2
- package/plugins/ModelRoomLabelPlugin/Controller.d.ts +35 -0
- package/plugins/ModelRoomLabelPlugin/Controller.js +147 -0
- package/plugins/ModelRoomLabelPlugin/RoomLabelItem.d.ts +8 -0
- package/plugins/ModelRoomLabelPlugin/RoomLabelItem.js +48 -0
- package/plugins/ModelRoomLabelPlugin/RoomLabelItems.d.ts +7 -0
- package/plugins/ModelRoomLabelPlugin/RoomLabelItems.js +149 -0
- package/plugins/ModelRoomLabelPlugin/index.d.ts +8 -0
- package/plugins/ModelRoomLabelPlugin/index.js +16 -0
- package/plugins/ModelRoomLabelPlugin/typings.d.ts +35 -0
- package/plugins/ModelRoomLabelPlugin/typings.js +5 -0
- package/plugins/ModelRoomLabelPlugin/utils/parseData.d.ts +3 -0
- package/plugins/ModelRoomLabelPlugin/utils/parseData.js +29 -0
- package/plugins/PanoMaskSelectorPlugin/compare.d.ts +1 -0
- package/plugins/PanoMaskSelectorPlugin/compare.js +15 -0
- package/plugins/PanoMaskSelectorPlugin/createBox.d.ts +7 -0
- package/plugins/PanoMaskSelectorPlugin/createBox.js +61 -0
- package/plugins/PanoMaskSelectorPlugin/createTextures.d.ts +3 -0
- package/plugins/PanoMaskSelectorPlugin/createTextures.js +29 -0
- package/plugins/PanoMaskSelectorPlugin/fragmentShader.d.ts +1 -0
- package/plugins/PanoMaskSelectorPlugin/fragmentShader.js +8 -0
- package/plugins/PanoMaskSelectorPlugin/index.d.ts +49 -0
- package/plugins/PanoMaskSelectorPlugin/index.js +262 -0
- package/plugins/PanoMaskSelectorPlugin/vertexShader.d.ts +1 -0
- package/plugins/PanoMaskSelectorPlugin/vertexShader.js +8 -0
- package/plugins/floorplan/ModelFloorplanPlugin/components/Camera.js +4 -2
- package/plugins/floorplan/ModelFloorplanPlugin/components/Compass.js +2 -1
- package/plugins/floorplan/ModelFloorplanPlugin/components/NowFloor/RoomLabels.js +5 -2
- package/plugins/floorplan/ModelFloorplanPlugin/components/index.js +1 -1
- package/shared-utils/createCanvasTextTexture.d.ts +8 -0
- package/shared-utils/createCanvasTextTexture.js +29 -0
- package/shared-utils/three/transfromToMeshBasicMaterial.d.ts +2 -0
- package/shared-utils/three/transfromToMeshBasicMaterial.js +27 -0
- package/typedoc/plugins.d.ts +2 -0
- package/typedoc/plugins.js +39 -1
- package/data/wYnRjQ4KZoV1yPoG.d.ts +0 -114
- package/data/wYnRjQ4KZoV1yPoG.js +0 -512
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.ModelRoomLabelController = void 0;
|
|
9
|
+
|
|
10
|
+
var React = _interopRequireWildcard(require("react"));
|
|
11
|
+
|
|
12
|
+
var ReactDOM = _interopRequireWildcard(require("react-dom"));
|
|
13
|
+
|
|
14
|
+
var _RoomLabelItems = _interopRequireDefault(require("./RoomLabelItems"));
|
|
15
|
+
|
|
16
|
+
var _parseData = require("./utils/parseData");
|
|
17
|
+
|
|
18
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
19
|
+
|
|
20
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
21
|
+
|
|
22
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
23
|
+
|
|
24
|
+
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
25
|
+
|
|
26
|
+
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); } }
|
|
27
|
+
|
|
28
|
+
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
|
|
29
|
+
|
|
30
|
+
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
31
|
+
|
|
32
|
+
var ModelRoomLabelController = /*#__PURE__*/function () {
|
|
33
|
+
function ModelRoomLabelController(five) {
|
|
34
|
+
var _this = this;
|
|
35
|
+
|
|
36
|
+
_classCallCheck(this, ModelRoomLabelController);
|
|
37
|
+
|
|
38
|
+
_defineProperty(this, "enabled", true);
|
|
39
|
+
|
|
40
|
+
_defineProperty(this, "roomLabels", []);
|
|
41
|
+
|
|
42
|
+
_defineProperty(this, "container", document.createElement('div'));
|
|
43
|
+
|
|
44
|
+
_defineProperty(this, "onFiveModeChange", function (mode) {
|
|
45
|
+
if (mode !== 'Floorplan') {
|
|
46
|
+
_this.fiveModeEnabled = false;
|
|
47
|
+
|
|
48
|
+
_this.render();
|
|
49
|
+
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
_this.five.once('initAnimationEnded', function () {
|
|
54
|
+
_this.fiveModeEnabled = _this.five.currentMode === 'Floorplan';
|
|
55
|
+
|
|
56
|
+
_this.render();
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
this.five = five;
|
|
61
|
+
this.fiveModeEnabled = this.five.currentMode === 'Floorplan'; // init container style
|
|
62
|
+
|
|
63
|
+
this.container.classList.add('model-room-label-plugin-container');
|
|
64
|
+
this.container.style.width = '100%';
|
|
65
|
+
this.container.style.height = '100%';
|
|
66
|
+
this.container.style.position = 'absolute';
|
|
67
|
+
this.container.style.left = '0';
|
|
68
|
+
this.container.style.top = '0'; // five lisenter
|
|
69
|
+
|
|
70
|
+
this.five.once('dispose', function () {
|
|
71
|
+
return _this.dispose();
|
|
72
|
+
});
|
|
73
|
+
this.five.on('modeChange', this.onFiveModeChange);
|
|
74
|
+
this.render();
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
_createClass(ModelRoomLabelController, [{
|
|
78
|
+
key: "dispose",
|
|
79
|
+
value: function dispose() {
|
|
80
|
+
this.five.off('modeChange', this.onFiveModeChange);
|
|
81
|
+
ReactDOM.unmountComponentAtNode(this.container);
|
|
82
|
+
this.container.remove();
|
|
83
|
+
}
|
|
84
|
+
/** 加载数据 */
|
|
85
|
+
|
|
86
|
+
}, {
|
|
87
|
+
key: "load",
|
|
88
|
+
value: function load(data) {
|
|
89
|
+
this.roomLabels = (0, _parseData.parseModelRoomLabelPluginData)(data);
|
|
90
|
+
this.render();
|
|
91
|
+
}
|
|
92
|
+
/** 设置插件容器 */
|
|
93
|
+
|
|
94
|
+
}, {
|
|
95
|
+
key: "appendTo",
|
|
96
|
+
value: function appendTo(wrapper) {
|
|
97
|
+
this.wrapper = wrapper;
|
|
98
|
+
wrapper.appendChild(this.container);
|
|
99
|
+
this.render();
|
|
100
|
+
return this;
|
|
101
|
+
}
|
|
102
|
+
/** 禁用插件功能
|
|
103
|
+
* @description
|
|
104
|
+
* - 如果当前正在展示中,会清除所有展示的 DOM
|
|
105
|
+
* - 如果当前未展示,即使后续 Five 状态满足展示要求,也不会展示
|
|
106
|
+
* */
|
|
107
|
+
|
|
108
|
+
}, {
|
|
109
|
+
key: "disable",
|
|
110
|
+
value: function disable() {
|
|
111
|
+
this.enabled = false;
|
|
112
|
+
this.render();
|
|
113
|
+
return this;
|
|
114
|
+
}
|
|
115
|
+
/** 启用插件功能
|
|
116
|
+
* @description
|
|
117
|
+
* - 如果当前符合展示条件,会立刻展示
|
|
118
|
+
* - 如果不符合展示条件,会等待 Five 状态满足条件后再展示
|
|
119
|
+
*/
|
|
120
|
+
|
|
121
|
+
}, {
|
|
122
|
+
key: "enable",
|
|
123
|
+
value: function enable() {
|
|
124
|
+
this.enabled = true;
|
|
125
|
+
this.render();
|
|
126
|
+
return this;
|
|
127
|
+
}
|
|
128
|
+
/** 监听 Five Mode 变化
|
|
129
|
+
* @description
|
|
130
|
+
* Mode 不符合要求时,立刻消失,满足要求时,需要等待动画结束再展示
|
|
131
|
+
*/
|
|
132
|
+
|
|
133
|
+
}, {
|
|
134
|
+
key: "render",
|
|
135
|
+
value: function render() {
|
|
136
|
+
if (!this.wrapper) return;
|
|
137
|
+
ReactDOM.render(this.enabled && this.fiveModeEnabled ? /*#__PURE__*/React.createElement(_RoomLabelItems["default"], {
|
|
138
|
+
five: this.five,
|
|
139
|
+
roomLabels: this.roomLabels
|
|
140
|
+
}) : /*#__PURE__*/React.createElement(React.Fragment, null), this.container);
|
|
141
|
+
}
|
|
142
|
+
}]);
|
|
143
|
+
|
|
144
|
+
return ModelRoomLabelController;
|
|
145
|
+
}();
|
|
146
|
+
|
|
147
|
+
exports.ModelRoomLabelController = ModelRoomLabelController;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { Five } from '@realsee/five';
|
|
3
|
+
import { RoomLabel } from './typings';
|
|
4
|
+
declare const RefRoomLabelItem: React.ForwardRefExoticComponent<{
|
|
5
|
+
five: Five;
|
|
6
|
+
item: RoomLabel;
|
|
7
|
+
} & React.RefAttributes<HTMLDivElement>>;
|
|
8
|
+
export default RefRoomLabelItem;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports["default"] = void 0;
|
|
9
|
+
|
|
10
|
+
var _style = _interopRequireDefault(require("styled-jsx/style"));
|
|
11
|
+
|
|
12
|
+
var React = _interopRequireWildcard(require("react"));
|
|
13
|
+
|
|
14
|
+
var _px2rem = _interopRequireDefault(require("../../shared-utils/px2rem"));
|
|
15
|
+
|
|
16
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
17
|
+
|
|
18
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
19
|
+
|
|
20
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
21
|
+
|
|
22
|
+
function RoomLabelItem(props, ref) {
|
|
23
|
+
var five = props.five;
|
|
24
|
+
var roomName = props.item.name;
|
|
25
|
+
var handleClick = React.useCallback(function () {
|
|
26
|
+
five.setState({
|
|
27
|
+
panoIndex: props.item.panoIndex,
|
|
28
|
+
mode: 'Panorama',
|
|
29
|
+
longitude: props.item.longitude
|
|
30
|
+
});
|
|
31
|
+
}, [props.five]);
|
|
32
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
33
|
+
onClick: handleClick,
|
|
34
|
+
ref: ref,
|
|
35
|
+
className: _style["default"].dynamic([["3619298579", [(0, _px2rem["default"])(roomName.length > 3 ? 8 : 10), (0, _px2rem["default"])(-64), (0, _px2rem["default"])(20), (0, _px2rem["default"])(32), (0, _px2rem["default"])(6), (0, _px2rem["default"])(-44), (0, _px2rem["default"])(48), (0, _px2rem["default"])(1)]]]) + " " + "room-guid-label-plugin__item"
|
|
36
|
+
}, /*#__PURE__*/React.createElement(_style["default"], {
|
|
37
|
+
id: "3619298579",
|
|
38
|
+
dynamic: [(0, _px2rem["default"])(roomName.length > 3 ? 8 : 10), (0, _px2rem["default"])(-64), (0, _px2rem["default"])(20), (0, _px2rem["default"])(32), (0, _px2rem["default"])(6), (0, _px2rem["default"])(-44), (0, _px2rem["default"])(48), (0, _px2rem["default"])(1)]
|
|
39
|
+
}, [".room-guid-label-plugin__item.__jsx-style-dynamic-selector{position:absolute;z-index:0;font-size:".concat((0, _px2rem["default"])(roomName.length > 3 ? 8 : 10), ";-webkit-transform:'';-ms-transform:'';transform:'';cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;}"), ".room-guid-label-plugin__item-text.__jsx-style-dynamic-selector{position:absolute;left:0;top:".concat((0, _px2rem["default"])(-64), ";-webkit-transform:translate(-50%,0);-ms-transform:translate(-50%,0);transform:translate(-50%,0);display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:").concat((0, _px2rem["default"])(20), ";min-width:").concat((0, _px2rem["default"])(32), ";padding:0 ").concat((0, _px2rem["default"])(6), ";pointer-events:all;background:url('//vrlab-static.ljcdn.com/release/web/room-label-bg.23e9d038.png') no-repeat;background-size:100% 100%;white-space:nowrap;}"), ".room-guid-label-plugin__item-bar.__jsx-style-dynamic-selector{position:absolute;top:".concat((0, _px2rem["default"])(-44), ";height:").concat((0, _px2rem["default"])(48), ";width:").concat((0, _px2rem["default"])(1), ";background-image:linear-gradient(to bottom,rgba(255,255,255,1),rgba(255,255,255,0));}")]), /*#__PURE__*/React.createElement("span", {
|
|
40
|
+
className: _style["default"].dynamic([["3619298579", [(0, _px2rem["default"])(roomName.length > 3 ? 8 : 10), (0, _px2rem["default"])(-64), (0, _px2rem["default"])(20), (0, _px2rem["default"])(32), (0, _px2rem["default"])(6), (0, _px2rem["default"])(-44), (0, _px2rem["default"])(48), (0, _px2rem["default"])(1)]]]) + " " + "room-guid-label-plugin__item-text"
|
|
41
|
+
}, roomName), /*#__PURE__*/React.createElement("div", {
|
|
42
|
+
className: _style["default"].dynamic([["3619298579", [(0, _px2rem["default"])(roomName.length > 3 ? 8 : 10), (0, _px2rem["default"])(-64), (0, _px2rem["default"])(20), (0, _px2rem["default"])(32), (0, _px2rem["default"])(6), (0, _px2rem["default"])(-44), (0, _px2rem["default"])(48), (0, _px2rem["default"])(1)]]]) + " " + "room-guid-label-plugin__item-bar"
|
|
43
|
+
}));
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
var RefRoomLabelItem = /*#__PURE__*/React.forwardRef(RoomLabelItem);
|
|
47
|
+
var _default = RefRoomLabelItem;
|
|
48
|
+
exports["default"] = _default;
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports["default"] = RoomLabelItems;
|
|
9
|
+
|
|
10
|
+
var _style = _interopRequireDefault(require("styled-jsx/style"));
|
|
11
|
+
|
|
12
|
+
var React = _interopRequireWildcard(require("react"));
|
|
13
|
+
|
|
14
|
+
var _three = require("three");
|
|
15
|
+
|
|
16
|
+
var _RoomLabelItem = _interopRequireDefault(require("./RoomLabelItem"));
|
|
17
|
+
|
|
18
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
19
|
+
|
|
20
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
21
|
+
|
|
22
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
23
|
+
|
|
24
|
+
function _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct; } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); }
|
|
25
|
+
|
|
26
|
+
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
27
|
+
|
|
28
|
+
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
|
|
29
|
+
|
|
30
|
+
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
31
|
+
|
|
32
|
+
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
33
|
+
|
|
34
|
+
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
35
|
+
|
|
36
|
+
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
37
|
+
|
|
38
|
+
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
39
|
+
|
|
40
|
+
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."); }
|
|
41
|
+
|
|
42
|
+
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); }
|
|
43
|
+
|
|
44
|
+
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; }
|
|
45
|
+
|
|
46
|
+
function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : 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; }
|
|
47
|
+
|
|
48
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
49
|
+
|
|
50
|
+
function getLabelVisible(five, roomLabelItem) {
|
|
51
|
+
// 先看是不是在当前展示的楼层上
|
|
52
|
+
var isLabelInFloor = five.model.shownFloor === null || roomLabelItem.floorIndex === five.model.shownFloor;
|
|
53
|
+
if (!isLabelInFloor) return false; // 再看是不是被模型遮挡
|
|
54
|
+
|
|
55
|
+
var raycaster = new _three.Raycaster();
|
|
56
|
+
var cameraPosition = five.camera.position.clone();
|
|
57
|
+
var position = new _three.Vector3(roomLabelItem.position.x, roomLabelItem.position.y, roomLabelItem.position.z);
|
|
58
|
+
var vectorDistance = position.distanceTo(cameraPosition);
|
|
59
|
+
raycaster.set(cameraPosition.clone(), position.clone().sub(cameraPosition).normalize());
|
|
60
|
+
|
|
61
|
+
var _five$model$intersect = five.model.intersectRaycaster(raycaster),
|
|
62
|
+
_five$model$intersect2 = _slicedToArray(_five$model$intersect, 1),
|
|
63
|
+
intersection = _five$model$intersect2[0];
|
|
64
|
+
|
|
65
|
+
if (intersection && intersection.distance + 1 < vectorDistance) return false;
|
|
66
|
+
return true;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
function getLabelTransform(five, roomLabelItem, containerWidth, containerHeight) {
|
|
70
|
+
var position = new _three.Vector3(roomLabelItem.position.x, roomLabelItem.position.y, roomLabelItem.position.z);
|
|
71
|
+
var mouse = position.clone().project(five.camera);
|
|
72
|
+
var xOffset = Math.ceil((mouse.x + 1) / 2 * containerWidth);
|
|
73
|
+
var yOffset = Math.ceil((-mouse.y + 1) / 2 * containerHeight);
|
|
74
|
+
return "translate(".concat(xOffset, "px, ").concat(yOffset, "px)");
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
function updateFormatData(five, labels, containerWidth, containerHeight) {
|
|
78
|
+
labels.forEach(function (roomLabelItem) {
|
|
79
|
+
// 计算是否可见,入股不可见,不会更新位置
|
|
80
|
+
roomLabelItem.visible = getLabelVisible(five, roomLabelItem);
|
|
81
|
+
if (!roomLabelItem.visible) return roomLabelItem; // 更新位置
|
|
82
|
+
|
|
83
|
+
roomLabelItem.transform = getLabelTransform(five, roomLabelItem, containerWidth, containerHeight);
|
|
84
|
+
return true;
|
|
85
|
+
});
|
|
86
|
+
labels.filter(function (_ref) {
|
|
87
|
+
var visible = _ref.visible;
|
|
88
|
+
return visible;
|
|
89
|
+
}).map(function (roomLabelItem) {
|
|
90
|
+
return {
|
|
91
|
+
roomLabelItem: roomLabelItem,
|
|
92
|
+
distance: _construct(_three.Vector3, _toConsumableArray(Object.values(roomLabelItem.position))).clone().distanceTo(five.camera.position)
|
|
93
|
+
};
|
|
94
|
+
}).sort(function (a, b) {
|
|
95
|
+
return a.distance - b.distance;
|
|
96
|
+
}).forEach(function (_ref2, index) {
|
|
97
|
+
var roomLabelItem = _ref2.roomLabelItem;
|
|
98
|
+
roomLabelItem.zIndex = index * 10;
|
|
99
|
+
});
|
|
100
|
+
return labels;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
function RoomLabelItems(props) {
|
|
104
|
+
var five = props.five;
|
|
105
|
+
var itemRefs = React.useRef([]);
|
|
106
|
+
var contentRef = React.useRef(null);
|
|
107
|
+
var roomLabels = props.roomLabels;
|
|
108
|
+
|
|
109
|
+
function onFiveCameraDirectionUpdate() {
|
|
110
|
+
if (!contentRef.current) return;
|
|
111
|
+
updateFormatData(five, roomLabels, contentRef.current.clientWidth, contentRef.current.clientHeight).forEach(function (item, index) {
|
|
112
|
+
var ref = itemRefs.current[index];
|
|
113
|
+
if (!ref) return;
|
|
114
|
+
|
|
115
|
+
if (!item.visible) {
|
|
116
|
+
ref.style.opacity = '0';
|
|
117
|
+
ref.style.pointerEvents = 'none';
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
ref.style.opacity = '1';
|
|
122
|
+
ref.style.pointerEvents = 'all';
|
|
123
|
+
ref.style.transform = item.transform;
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
React.useEffect(function () {
|
|
128
|
+
five.on('cameraDirectionUpdate', onFiveCameraDirectionUpdate);
|
|
129
|
+
onFiveCameraDirectionUpdate();
|
|
130
|
+
return function () {
|
|
131
|
+
five.off('cameraDirectionUpdate', onFiveCameraDirectionUpdate);
|
|
132
|
+
};
|
|
133
|
+
}, []);
|
|
134
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
135
|
+
ref: contentRef,
|
|
136
|
+
className: "jsx-2859587460" + " " + "room-guid-label-plugin__content"
|
|
137
|
+
}, /*#__PURE__*/React.createElement(_style["default"], {
|
|
138
|
+
id: "2859587460"
|
|
139
|
+
}, [".room-guid-label-plugin__content.jsx-2859587460{width:100%;height:100%;position:relative;color:#fff;}"]), roomLabels.map(function (item) {
|
|
140
|
+
return /*#__PURE__*/React.createElement(_RoomLabelItem["default"], {
|
|
141
|
+
key: item.id,
|
|
142
|
+
item: item,
|
|
143
|
+
five: props.five,
|
|
144
|
+
ref: function ref(_ref3) {
|
|
145
|
+
return itemRefs.current.push(_ref3);
|
|
146
|
+
}
|
|
147
|
+
});
|
|
148
|
+
}));
|
|
149
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { FivePlugin } from '@realsee/five';
|
|
2
|
+
import { ModelRoomLabelController, ModelRoomLabelPluginParameters } from './Controller';
|
|
3
|
+
export declare const ModelRoomLabelPlugin: FivePlugin<ModelRoomLabelPluginParameters, ModelRoomLabelPluginReturnType>;
|
|
4
|
+
export default ModelRoomLabelPlugin;
|
|
5
|
+
export type { ModelRoomLabelController } from './Controller';
|
|
6
|
+
export type { ModelRoomLabelPluginData, RoomLabel } from './typings';
|
|
7
|
+
export declare type ModelRoomLabelPluginReturnType = ModelRoomLabelController;
|
|
8
|
+
export type { ModelRoomLabelPluginParameters } from './Controller';
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports["default"] = exports.ModelRoomLabelPlugin = void 0;
|
|
7
|
+
|
|
8
|
+
var _Controller = require("./Controller");
|
|
9
|
+
|
|
10
|
+
var ModelRoomLabelPlugin = function ModelRoomLabelPlugin(five) {
|
|
11
|
+
return new _Controller.ModelRoomLabelController(five);
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
exports.ModelRoomLabelPlugin = ModelRoomLabelPlugin;
|
|
15
|
+
var _default = ModelRoomLabelPlugin;
|
|
16
|
+
exports["default"] = _default;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
export declare type ModelRoomLabelPluginData = {
|
|
2
|
+
model_room_labels: Readonly<{
|
|
3
|
+
id: string;
|
|
4
|
+
name: string;
|
|
5
|
+
longitude: number;
|
|
6
|
+
pano_index: number;
|
|
7
|
+
floor_index: number;
|
|
8
|
+
position: {
|
|
9
|
+
x: number;
|
|
10
|
+
y: number;
|
|
11
|
+
z: number;
|
|
12
|
+
};
|
|
13
|
+
}>[];
|
|
14
|
+
};
|
|
15
|
+
export interface RoomLabel {
|
|
16
|
+
/** 房屋 ID */
|
|
17
|
+
readonly id: string;
|
|
18
|
+
/** 房屋名 */
|
|
19
|
+
readonly name: string;
|
|
20
|
+
/** 走到对应 panoIndex 时 five 的水平角度 */
|
|
21
|
+
readonly longitude: number;
|
|
22
|
+
/** 点击标签会走到的 panoIndex */
|
|
23
|
+
readonly panoIndex: number;
|
|
24
|
+
/** 所处楼层 */
|
|
25
|
+
readonly floorIndex: number;
|
|
26
|
+
/** 引导标签的三维坐标,一般是房屋中心点 */
|
|
27
|
+
readonly position: {
|
|
28
|
+
x: number;
|
|
29
|
+
y: number;
|
|
30
|
+
z: number;
|
|
31
|
+
};
|
|
32
|
+
zIndex: number;
|
|
33
|
+
visible: boolean;
|
|
34
|
+
transform: string;
|
|
35
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.parseModelRoomLabelPluginData = parseModelRoomLabelPluginData;
|
|
7
|
+
|
|
8
|
+
/** @description 下划线转驼峰 */
|
|
9
|
+
function parseModelRoomLabelPluginData(data) {
|
|
10
|
+
return data.model_room_labels.map(function (_ref) {
|
|
11
|
+
var id = _ref.id,
|
|
12
|
+
pano_index = _ref.pano_index,
|
|
13
|
+
floor_index = _ref.floor_index,
|
|
14
|
+
name = _ref.name,
|
|
15
|
+
position = _ref.position,
|
|
16
|
+
longitude = _ref.longitude;
|
|
17
|
+
return {
|
|
18
|
+
id: id,
|
|
19
|
+
name: name,
|
|
20
|
+
position: position,
|
|
21
|
+
longitude: longitude,
|
|
22
|
+
panoIndex: pano_index,
|
|
23
|
+
floorIndex: floor_index,
|
|
24
|
+
zIndex: 0,
|
|
25
|
+
visible: false,
|
|
26
|
+
transform: ''
|
|
27
|
+
};
|
|
28
|
+
});
|
|
29
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function compare(c1: THREE.Color, c2: THREE.Color, threshold?: number): boolean;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.compare = compare;
|
|
7
|
+
|
|
8
|
+
// 判断两个颜色是否相似
|
|
9
|
+
function compare(c1, c2) {
|
|
10
|
+
var threshold = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0.025;
|
|
11
|
+
var r = Math.abs(c1.r - c2.r);
|
|
12
|
+
var g = Math.abs(c1.g - c2.g);
|
|
13
|
+
var b = Math.abs(c1.b - c2.b);
|
|
14
|
+
return r < threshold && g < threshold && b < threshold;
|
|
15
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import * as THREE from 'three';
|
|
2
|
+
import { WorkObserver } from '@realsee/five';
|
|
3
|
+
export declare function createBox(textures: THREE.Texture[], observer: WorkObserver, _config?: {
|
|
4
|
+
opacity?: boolean;
|
|
5
|
+
maskColor?: THREE.Color;
|
|
6
|
+
thickness?: number;
|
|
7
|
+
}): THREE.Mesh<THREE.BoxBufferGeometry, THREE.ShaderMaterial[]>;
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.createBox = createBox;
|
|
9
|
+
|
|
10
|
+
var THREE = _interopRequireWildcard(require("three"));
|
|
11
|
+
|
|
12
|
+
var _vertexShader = require("./vertexShader");
|
|
13
|
+
|
|
14
|
+
var _fragmentShader = require("./fragmentShader");
|
|
15
|
+
|
|
16
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
17
|
+
|
|
18
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
19
|
+
|
|
20
|
+
function createBox(textures, observer, _config) {
|
|
21
|
+
var config = Object.assign({
|
|
22
|
+
opacity: true,
|
|
23
|
+
thickness: 0.005,
|
|
24
|
+
maskColor: new THREE.Color(1, 0, 0)
|
|
25
|
+
}, _config || {});
|
|
26
|
+
var materials = textures.map(function (texture) {
|
|
27
|
+
return new THREE.ShaderMaterial({
|
|
28
|
+
uniforms: {
|
|
29
|
+
map: {
|
|
30
|
+
value: texture
|
|
31
|
+
},
|
|
32
|
+
enable: {
|
|
33
|
+
value: 1
|
|
34
|
+
},
|
|
35
|
+
opacity: {
|
|
36
|
+
value: config.opacity ? 0.0 : 1
|
|
37
|
+
},
|
|
38
|
+
selectedColor: {
|
|
39
|
+
value: new THREE.Color(0, 0, 0)
|
|
40
|
+
},
|
|
41
|
+
maskColor: {
|
|
42
|
+
value: config.maskColor
|
|
43
|
+
},
|
|
44
|
+
thickness: {
|
|
45
|
+
value: config.thickness
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
vertexShader: _vertexShader.vertexShader,
|
|
49
|
+
fragmentShader: _fragmentShader.fragmentShader,
|
|
50
|
+
transparent: true,
|
|
51
|
+
depthTest: false,
|
|
52
|
+
side: THREE.DoubleSide
|
|
53
|
+
});
|
|
54
|
+
});
|
|
55
|
+
var boxBufferGeometry = new THREE.BoxBufferGeometry(1, 1, 1);
|
|
56
|
+
var box = new THREE.Mesh(boxBufferGeometry, materials);
|
|
57
|
+
box.geometry.scale(-1, 1, 1);
|
|
58
|
+
box.position.set(observer.position.x, observer.position.y, observer.position.z);
|
|
59
|
+
box.quaternion.multiply(observer.quaternion);
|
|
60
|
+
return box;
|
|
61
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.createTextures = createTextures;
|
|
9
|
+
|
|
10
|
+
var THREE = _interopRequireWildcard(require("three"));
|
|
11
|
+
|
|
12
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
13
|
+
|
|
14
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
15
|
+
|
|
16
|
+
function createTextures(imgs) {
|
|
17
|
+
var loader = new THREE.ImageLoader();
|
|
18
|
+
var keys = ['up', 'down', 'right', 'left', 'front', 'back'];
|
|
19
|
+
var textures = keys.map(function (key) {
|
|
20
|
+
var url = imgs[key];
|
|
21
|
+
var texture = new THREE.Texture();
|
|
22
|
+
loader.load(url, function (image) {
|
|
23
|
+
texture.image = image;
|
|
24
|
+
texture.needsUpdate = true;
|
|
25
|
+
});
|
|
26
|
+
return texture;
|
|
27
|
+
});
|
|
28
|
+
return textures;
|
|
29
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const fragmentShader = "\nconst float PI = 3.1415926535897932384626433832795;\nuniform int enable;\nuniform sampler2D map;\nvarying vec2 vUv;\n\nuniform vec3 selectedColor;\nuniform vec3 maskColor;\nuniform float opacity;\nuniform float thickness;\n\n\n// \u5224\u65AD\u4E24\u4E2A\u989C\u8272\u662F\u5426\u76F8\u4F3C\nbool compare(vec3 c1, vec3 c2, float threshold) {\n // \u8272\u503C\u8BEF\u5DEE 0.05\n float diff = threshold;\n\n float r = abs(c1.x - c2.x);\n float g = abs(c1.y - c2.y);\n float b = abs(c1.z - c2.z);\n\n return r < diff && g < diff && b < diff;\n}\n\nvoid main(void) {\n vec3 color = texture2D(map, vUv).xyz;\n float alpha = texture2D(map, vUv).a;\n\n gl_FragColor = vec4(color, opacity);\n\n // \u5F00\u5173\n if (enable != 1) {\n gl_FragColor = vec4(color, opacity);\n return;\n }\n\n // \u9ED8\u8BA4\u503C\uFF1A\u672A\u63D0\u4F9B \u9009\u4E2D\u8272\u503C\n if (selectedColor.x == 0.0 && selectedColor.y == 0.0 && selectedColor.z == 0.0) {\n gl_FragColor = vec4(color, opacity);\n return;\n }\n\n bool similar = compare(color, selectedColor, 0.025);\n\n // \u4E0D\u76F8\u4F3C\n if (similar == false) {\n gl_FragColor = vec4(color, opacity);\n return;\n }\n\n // \u5BF9\u6BD4\u534A\u5F84\u5E45\u5EA6\n float offset1 = thickness;\n float offset2 = offset1 * sin(PI/4.0);\n\n vec3 top = texture2D(map, vec2(vUv.x, vUv.y + offset1)).xyz;\n vec3 right = texture2D(map, vec2(vUv.x + offset1, vUv.y)).xyz;\n vec3 bottom = texture2D(map, vec2(vUv.x, vUv.y - offset1)).xyz;\n vec3 left = texture2D(map, vec2(vUv.x - offset1, vUv.y)).xyz;\n \n vec3 topRight = texture2D(map, vec2(vUv.x + offset2, vUv.y + offset2)).xyz;\n vec3 rightBottom = texture2D(map, vec2(vUv.x + offset2, vUv.y - offset2)).xyz;\n vec3 bottomLeft = texture2D(map, vec2(vUv.x - offset2, vUv.y - offset2)).xyz;\n vec3 leftTop = texture2D(map, vec2(vUv.x - offset2, vUv.y + offset2)).xyz;\n\n float threshold = 0.0025;\n bool a1 = compare(color, top, threshold);\n bool b1 = compare(color, right, threshold);\n bool c1 = compare(color, bottom, threshold);\n bool d1 = compare(color, left, threshold);\n\n\n bool a2 = compare(color, topRight, threshold);\n bool b2 = compare(color, rightBottom, threshold);\n bool c2 = compare(color, bottomLeft, threshold);\n bool d2 = compare(color, leftTop, threshold);\n\n if (a1 == true && b1 == true && c1 == true && d1 == true && a2 == true && b2 == true && c2 == true && d2 == true) {\n gl_FragColor = vec4(color, opacity);\n return;\n }\n\n gl_FragColor = vec4(maskColor.x, maskColor.y, maskColor.z, 1.0);\n // gl_FragColor = vec4(154.0 / 255.0, 205.0 / 255.0, 50.0 / 255.0, 1.0) ;\n // gl_FragColor = vec4(139.0 / 255.0, 0.0 / 255.0, 0.0 / 255.0, 1.0) ;\n // gl_FragColor = vec4(255.0 / 255.0, 235.0 / 255.0, 59.0 / 255.0, 1.0) ;\n\n}\n";
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.fragmentShader = void 0;
|
|
7
|
+
var fragmentShader = "\nconst float PI = 3.1415926535897932384626433832795;\nuniform int enable;\nuniform sampler2D map;\nvarying vec2 vUv;\n\nuniform vec3 selectedColor;\nuniform vec3 maskColor;\nuniform float opacity;\nuniform float thickness;\n\n\n// \u5224\u65AD\u4E24\u4E2A\u989C\u8272\u662F\u5426\u76F8\u4F3C\nbool compare(vec3 c1, vec3 c2, float threshold) {\n // \u8272\u503C\u8BEF\u5DEE 0.05\n float diff = threshold;\n\n float r = abs(c1.x - c2.x);\n float g = abs(c1.y - c2.y);\n float b = abs(c1.z - c2.z);\n\n return r < diff && g < diff && b < diff;\n}\n\nvoid main(void) {\n vec3 color = texture2D(map, vUv).xyz;\n float alpha = texture2D(map, vUv).a;\n\n gl_FragColor = vec4(color, opacity);\n\n // \u5F00\u5173\n if (enable != 1) {\n gl_FragColor = vec4(color, opacity);\n return;\n }\n\n // \u9ED8\u8BA4\u503C\uFF1A\u672A\u63D0\u4F9B \u9009\u4E2D\u8272\u503C\n if (selectedColor.x == 0.0 && selectedColor.y == 0.0 && selectedColor.z == 0.0) {\n gl_FragColor = vec4(color, opacity);\n return;\n }\n\n bool similar = compare(color, selectedColor, 0.025);\n\n // \u4E0D\u76F8\u4F3C\n if (similar == false) {\n gl_FragColor = vec4(color, opacity);\n return;\n }\n\n // \u5BF9\u6BD4\u534A\u5F84\u5E45\u5EA6\n float offset1 = thickness;\n float offset2 = offset1 * sin(PI/4.0);\n\n vec3 top = texture2D(map, vec2(vUv.x, vUv.y + offset1)).xyz;\n vec3 right = texture2D(map, vec2(vUv.x + offset1, vUv.y)).xyz;\n vec3 bottom = texture2D(map, vec2(vUv.x, vUv.y - offset1)).xyz;\n vec3 left = texture2D(map, vec2(vUv.x - offset1, vUv.y)).xyz;\n \n vec3 topRight = texture2D(map, vec2(vUv.x + offset2, vUv.y + offset2)).xyz;\n vec3 rightBottom = texture2D(map, vec2(vUv.x + offset2, vUv.y - offset2)).xyz;\n vec3 bottomLeft = texture2D(map, vec2(vUv.x - offset2, vUv.y - offset2)).xyz;\n vec3 leftTop = texture2D(map, vec2(vUv.x - offset2, vUv.y + offset2)).xyz;\n\n float threshold = 0.0025;\n bool a1 = compare(color, top, threshold);\n bool b1 = compare(color, right, threshold);\n bool c1 = compare(color, bottom, threshold);\n bool d1 = compare(color, left, threshold);\n\n\n bool a2 = compare(color, topRight, threshold);\n bool b2 = compare(color, rightBottom, threshold);\n bool c2 = compare(color, bottomLeft, threshold);\n bool d2 = compare(color, leftTop, threshold);\n\n if (a1 == true && b1 == true && c1 == true && d1 == true && a2 == true && b2 == true && c2 == true && d2 == true) {\n gl_FragColor = vec4(color, opacity);\n return;\n }\n\n gl_FragColor = vec4(maskColor.x, maskColor.y, maskColor.z, 1.0);\n // gl_FragColor = vec4(154.0 / 255.0, 205.0 / 255.0, 50.0 / 255.0, 1.0) ;\n // gl_FragColor = vec4(139.0 / 255.0, 0.0 / 255.0, 0.0 / 255.0, 1.0) ;\n // gl_FragColor = vec4(255.0 / 255.0, 235.0 / 255.0, 59.0 / 255.0, 1.0) ;\n\n}\n";
|
|
8
|
+
exports.fragmentShader = fragmentShader;
|