@anov/3d 0.0.4-alpha24 → 0.0.4-alpha25

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.
Files changed (69) hide show
  1. package/dist/applicationApi.js +1 -1
  2. package/dist/applicationApi.js.map +1 -1
  3. package/dist/factory/3d.d.ts +51 -0
  4. package/dist/factory/3d.js +203 -0
  5. package/dist/factory/3d.js.map +1 -0
  6. package/dist/factory/globalData.d.ts +1 -0
  7. package/dist/factory/globalData.js +2 -0
  8. package/dist/factory/globalData.js.map +1 -0
  9. package/dist/factory/regionData.d.ts +26 -0
  10. package/dist/factory/regionData.js +130 -0
  11. package/dist/factory/regionData.js.map +1 -0
  12. package/dist/factory/unit/areaBoundingBox.d.ts +7 -0
  13. package/dist/factory/unit/areaBoundingBox.js +28 -0
  14. package/dist/factory/unit/areaBoundingBox.js.map +1 -0
  15. package/dist/factory/unit/circle.d.ts +15 -0
  16. package/dist/factory/unit/circle.js +88 -0
  17. package/dist/factory/unit/circle.js.map +1 -0
  18. package/dist/factory/unit/cylinder.d.ts +18 -0
  19. package/dist/factory/unit/cylinder.js +125 -0
  20. package/dist/factory/unit/cylinder.js.map +1 -0
  21. package/dist/factory/unit/glsl/wall/fragmentShader.glsl +30 -0
  22. package/dist/factory/unit/glsl/wall/vertexShader.glsl +6 -0
  23. package/dist/factory/unit/index.d.ts +2 -0
  24. package/dist/factory/unit/index.js +61 -0
  25. package/dist/factory/unit/index.js.map +1 -0
  26. package/dist/factory/unit/line.d.ts +13 -0
  27. package/dist/factory/unit/line.js +96 -0
  28. package/dist/factory/unit/line.js.map +1 -0
  29. package/dist/factory/unit/poi.d.ts +15 -0
  30. package/dist/factory/unit/poi.js +140 -0
  31. package/dist/factory/unit/poi.js.map +1 -0
  32. package/dist/factory/unit/point.d.ts +10 -0
  33. package/dist/factory/unit/point.js +71 -0
  34. package/dist/factory/unit/point.js.map +1 -0
  35. package/dist/factory/unit/wall.d.ts +14 -0
  36. package/dist/factory/unit/wall.js +113 -0
  37. package/dist/factory/unit/wall.js.map +1 -0
  38. package/dist/factory/utils/areaBoundingBox.d.ts +14 -0
  39. package/dist/factory/utils/areaBoundingBox.js +39 -0
  40. package/dist/factory/utils/areaBoundingBox.js.map +1 -0
  41. package/dist/factory/utils/base64.d.ts +1 -0
  42. package/dist/factory/utils/base64.js +2 -0
  43. package/dist/factory/utils/base64.js.map +1 -0
  44. package/dist/factory/utils/finirMaterial.d.ts +3 -0
  45. package/dist/factory/utils/finirMaterial.js +39 -0
  46. package/dist/factory/utils/finirMaterial.js.map +1 -0
  47. package/dist/factory/utils/fontMesh.d.ts +10 -0
  48. package/dist/factory/utils/fontMesh.js +48 -0
  49. package/dist/factory/utils/fontMesh.js.map +1 -0
  50. package/dist/factory/utils/index.d.ts +2 -0
  51. package/dist/factory/utils/index.js +24 -0
  52. package/dist/factory/utils/index.js.map +1 -0
  53. package/dist/factory/utils/switchMaterial.d.ts +17 -0
  54. package/dist/factory/utils/switchMaterial.js +108 -0
  55. package/dist/factory/utils/switchMaterial.js.map +1 -0
  56. package/dist/module/environment/index.d.ts +4 -1
  57. package/dist/module/environment/index.js +7 -2
  58. package/dist/module/environment/index.js.map +1 -1
  59. package/dist/module/environment/time/index.d.ts +3 -1
  60. package/dist/module/environment/time/index.js.map +1 -1
  61. package/dist/module/model/index.js +6 -0
  62. package/dist/module/model/index.js.map +1 -1
  63. package/dist/module/scene/index.d.ts +7 -3
  64. package/dist/module/scene/index.js +66 -36
  65. package/dist/module/scene/index.js.map +1 -1
  66. package/dist/sdkEntry.d.ts +5 -2
  67. package/dist/sdkEntry.js +85 -65
  68. package/dist/sdkEntry.js.map +1 -1
  69. package/package.json +3 -3
@@ -0,0 +1,140 @@
1
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
2
+ function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return exports; }; var exports = {}, Op = Object.prototype, hasOwn = Op.hasOwnProperty, defineProperty = Object.defineProperty || function (obj, key, desc) { obj[key] = desc.value; }, $Symbol = "function" == typeof Symbol ? Symbol : {}, iteratorSymbol = $Symbol.iterator || "@@iterator", asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator", toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; function define(obj, key, value) { return Object.defineProperty(obj, key, { value: value, enumerable: !0, configurable: !0, writable: !0 }), obj[key]; } try { define({}, ""); } catch (err) { define = function define(obj, key, value) { return obj[key] = value; }; } function wrap(innerFn, outerFn, self, tryLocsList) { var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator, generator = Object.create(protoGenerator.prototype), context = new Context(tryLocsList || []); return defineProperty(generator, "_invoke", { value: makeInvokeMethod(innerFn, self, context) }), generator; } function tryCatch(fn, obj, arg) { try { return { type: "normal", arg: fn.call(obj, arg) }; } catch (err) { return { type: "throw", arg: err }; } } exports.wrap = wrap; var ContinueSentinel = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var IteratorPrototype = {}; define(IteratorPrototype, iteratorSymbol, function () { return this; }); var getProto = Object.getPrototypeOf, NativeIteratorPrototype = getProto && getProto(getProto(values([]))); NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype); var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype); function defineIteratorMethods(prototype) { ["next", "throw", "return"].forEach(function (method) { define(prototype, method, function (arg) { return this._invoke(method, arg); }); }); } function AsyncIterator(generator, PromiseImpl) { function invoke(method, arg, resolve, reject) { var record = tryCatch(generator[method], generator, arg); if ("throw" !== record.type) { var result = record.arg, value = result.value; return value && "object" == _typeof(value) && hasOwn.call(value, "__await") ? PromiseImpl.resolve(value.__await).then(function (value) { invoke("next", value, resolve, reject); }, function (err) { invoke("throw", err, resolve, reject); }) : PromiseImpl.resolve(value).then(function (unwrapped) { result.value = unwrapped, resolve(result); }, function (error) { return invoke("throw", error, resolve, reject); }); } reject(record.arg); } var previousPromise; defineProperty(this, "_invoke", { value: function value(method, arg) { function callInvokeWithMethodAndArg() { return new PromiseImpl(function (resolve, reject) { invoke(method, arg, resolve, reject); }); } return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(innerFn, self, context) { var state = "suspendedStart"; return function (method, arg) { if ("executing" === state) throw new Error("Generator is already running"); if ("completed" === state) { if ("throw" === method) throw arg; return doneResult(); } for (context.method = method, context.arg = arg;;) { var delegate = context.delegate; if (delegate) { var delegateResult = maybeInvokeDelegate(delegate, context); if (delegateResult) { if (delegateResult === ContinueSentinel) continue; return delegateResult; } } if ("next" === context.method) context.sent = context._sent = context.arg;else if ("throw" === context.method) { if ("suspendedStart" === state) throw state = "completed", context.arg; context.dispatchException(context.arg); } else "return" === context.method && context.abrupt("return", context.arg); state = "executing"; var record = tryCatch(innerFn, self, context); if ("normal" === record.type) { if (state = context.done ? "completed" : "suspendedYield", record.arg === ContinueSentinel) continue; return { value: record.arg, done: context.done }; } "throw" === record.type && (state = "completed", context.method = "throw", context.arg = record.arg); } }; } function maybeInvokeDelegate(delegate, context) { var methodName = context.method, method = delegate.iterator[methodName]; if (undefined === method) return context.delegate = null, "throw" === methodName && delegate.iterator.return && (context.method = "return", context.arg = undefined, maybeInvokeDelegate(delegate, context), "throw" === context.method) || "return" !== methodName && (context.method = "throw", context.arg = new TypeError("The iterator does not provide a '" + methodName + "' method")), ContinueSentinel; var record = tryCatch(method, delegate.iterator, context.arg); if ("throw" === record.type) return context.method = "throw", context.arg = record.arg, context.delegate = null, ContinueSentinel; var info = record.arg; return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, "return" !== context.method && (context.method = "next", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = "throw", context.arg = new TypeError("iterator result is not an object"), context.delegate = null, ContinueSentinel); } function pushTryEntry(locs) { var entry = { tryLoc: locs[0] }; 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry); } function resetTryEntry(entry) { var record = entry.completion || {}; record.type = "normal", delete record.arg, entry.completion = record; } function Context(tryLocsList) { this.tryEntries = [{ tryLoc: "root" }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0); } function values(iterable) { if (iterable) { var iteratorMethod = iterable[iteratorSymbol]; if (iteratorMethod) return iteratorMethod.call(iterable); if ("function" == typeof iterable.next) return iterable; if (!isNaN(iterable.length)) { var i = -1, next = function next() { for (; ++i < iterable.length;) if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next; return next.value = undefined, next.done = !0, next; }; return next.next = next; } } return { next: doneResult }; } function doneResult() { return { value: undefined, done: !0 }; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), defineProperty(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, "GeneratorFunction"), exports.isGeneratorFunction = function (genFun) { var ctor = "function" == typeof genFun && genFun.constructor; return !!ctor && (ctor === GeneratorFunction || "GeneratorFunction" === (ctor.displayName || ctor.name)); }, exports.mark = function (genFun) { return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, "GeneratorFunction")), genFun.prototype = Object.create(Gp), genFun; }, exports.awrap = function (arg) { return { __await: arg }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () { return this; }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) { void 0 === PromiseImpl && (PromiseImpl = Promise); var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl); return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) { return result.done ? result.value : iter.next(); }); }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, "Generator"), define(Gp, iteratorSymbol, function () { return this; }), define(Gp, "toString", function () { return "[object Generator]"; }), exports.keys = function (val) { var object = Object(val), keys = []; for (var key in object) keys.push(key); return keys.reverse(), function next() { for (; keys.length;) { var key = keys.pop(); if (key in object) return next.value = key, next.done = !1, next; } return next.done = !0, next; }; }, exports.values = values, Context.prototype = { constructor: Context, reset: function reset(skipTempReset) { if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = "next", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) "t" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined); }, stop: function stop() { this.done = !0; var rootRecord = this.tryEntries[0].completion; if ("throw" === rootRecord.type) throw rootRecord.arg; return this.rval; }, dispatchException: function dispatchException(exception) { if (this.done) throw exception; var context = this; function handle(loc, caught) { return record.type = "throw", record.arg = exception, context.next = loc, caught && (context.method = "next", context.arg = undefined), !!caught; } for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i], record = entry.completion; if ("root" === entry.tryLoc) return handle("end"); if (entry.tryLoc <= this.prev) { var hasCatch = hasOwn.call(entry, "catchLoc"), hasFinally = hasOwn.call(entry, "finallyLoc"); if (hasCatch && hasFinally) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } else if (hasCatch) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); } else { if (!hasFinally) throw new Error("try statement without catch or finally"); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } } } }, abrupt: function abrupt(type, arg) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) { var finallyEntry = entry; break; } } finallyEntry && ("break" === type || "continue" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null); var record = finallyEntry ? finallyEntry.completion : {}; return record.type = type, record.arg = arg, finallyEntry ? (this.method = "next", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record); }, complete: function complete(record, afterLoc) { if ("throw" === record.type) throw record.arg; return "break" === record.type || "continue" === record.type ? this.next = record.arg : "return" === record.type ? (this.rval = this.arg = record.arg, this.method = "return", this.next = "end") : "normal" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel; }, finish: function finish(finallyLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel; } }, catch: function _catch(tryLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc === tryLoc) { var record = entry.completion; if ("throw" === record.type) { var thrown = record.arg; resetTryEntry(entry); } return thrown; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(iterable, resultName, nextLoc) { return this.delegate = { iterator: values(iterable), resultName: resultName, nextLoc: nextLoc }, "next" === this.method && (this.arg = undefined), ContinueSentinel; } }, exports; }
3
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
4
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
5
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
6
+ function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
7
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
8
+ 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, _toPropertyKey(descriptor.key), descriptor); } }
9
+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
10
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
11
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
12
+ function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
13
+ import { Vector3, utils } from '@anov/3d-core';
14
+ import { EPoiType, Poi } from '@anov/3d-ability';
15
+ import { regionMap } from "../regionData";
16
+ import { POI_IMG } from "../utils/base64";
17
+ var PoiManage = /*#__PURE__*/function () {
18
+ function PoiManage(gobal) {
19
+ _classCallCheck(this, PoiManage);
20
+ _defineProperty(this, "gobal", void 0);
21
+ _defineProperty(this, "scene", void 0);
22
+ _defineProperty(this, "dialogPoi", void 0);
23
+ _defineProperty(this, "poiMesh", new Map());
24
+ _defineProperty(this, "wallManage", void 0);
25
+ _defineProperty(this, "interactionManager", void 0);
26
+ this.gobal = gobal;
27
+ this.scene = gobal.scene.scene;
28
+ this.wallManage = gobal.wall;
29
+ this.interactionManager = utils.storeManagement.get('interactionManager');
30
+ }
31
+ _createClass(PoiManage, [{
32
+ key: "generatePoi",
33
+ value: function generatePoi() {
34
+ var _this = this;
35
+ Object.keys(regionMap).forEach( /*#__PURE__*/function () {
36
+ var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(key) {
37
+ var region, option, poi, sprite, changeWallState;
38
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
39
+ while (1) switch (_context.prev = _context.next) {
40
+ case 0:
41
+ region = regionMap[key];
42
+ option = _objectSpread({
43
+ scale: 80
44
+ }, (region.id === '4' || region.id === '5') && {
45
+ width: 260,
46
+ height: 260,
47
+ img: POI_IMG
48
+ });
49
+ poi = new Poi(EPoiType.Line);
50
+ sprite = poi.create(region.title, option);
51
+ sprite.position.copy(new Vector3().fromArray(region.poi.position));
52
+ _this.scene.add(sprite);
53
+ _this.poiMesh.set(region.poi.id, sprite);
54
+
55
+ // 绑定事件
56
+ _this.interactionManager.add(sprite);
57
+ changeWallState = function changeWallState(show) {
58
+ var _this$dialogPoi;
59
+ if ((_this$dialogPoi = _this.dialogPoi) !== null && _this$dialogPoi !== void 0 && _this$dialogPoi.visible) return;
60
+ // 光墙
61
+ var wall = _this.wallManage.wallMesh.get(region.id);
62
+ wall.visible = show;
63
+ };
64
+ sprite.addEventListener('mouseover', function () {
65
+ if (!sprite.visible) return;
66
+ changeWallState(true);
67
+ });
68
+ sprite.addEventListener('mouseout', function () {
69
+ changeWallState(false);
70
+ });
71
+ sprite.addEventListener('click', function (event) {
72
+ if (!sprite.visible) return;
73
+ _this.reset();
74
+ // 光墙
75
+ var wall = _this.wallManage.wallMesh.get(region.id);
76
+ wall.visible = true;
77
+ // 隐藏当前POI点
78
+ sprite.visible = false;
79
+ _this.addDialogPanel(region, event.point);
80
+ });
81
+ case 12:
82
+ case "end":
83
+ return _context.stop();
84
+ }
85
+ }, _callee);
86
+ }));
87
+ return function (_x) {
88
+ return _ref.apply(this, arguments);
89
+ };
90
+ }());
91
+ }
92
+ }, {
93
+ key: "setVisible",
94
+ value: function setVisible() {
95
+ var visible = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
96
+ // 控制POI点的隐藏、显示
97
+ this.poiMesh.forEach(function (poi) {
98
+ poi.visible = visible;
99
+ });
100
+ // 移除面板
101
+ if (this.dialogPoi) this.dialogPoi.removeFromParent();
102
+ }
103
+ }, {
104
+ key: "reset",
105
+ value: function reset() {
106
+ var _this$wallManage;
107
+ // 控制POI点的隐藏、显示
108
+ this.setVisible(true);
109
+ // 控制光墙的隐藏、显示
110
+ (_this$wallManage = this.wallManage) === null || _this$wallManage === void 0 ? void 0 : _this$wallManage.wallMesh.forEach(function (wall) {
111
+ wall.visible = false;
112
+ });
113
+ }
114
+ }, {
115
+ key: "addDialogPanel",
116
+ value: function addDialogPanel(data, position) {
117
+ var _this2 = this;
118
+ // 添加面板
119
+ var poi = new Poi(EPoiType.Panel);
120
+ this.dialogPoi = poi.create({
121
+ title: data.title,
122
+ content: data.poi.content
123
+ }, {
124
+ print: true
125
+ });
126
+ this.dialogPoi.position.copy(position.clone().add(new Vector3(-30, 30, 0)));
127
+ this.scene.add(this.dialogPoi);
128
+ this.interactionManager.add(this.dialogPoi);
129
+ this.dialogPoi.addEventListener('click', function (event) {
130
+ _this2.dialogPoi.remove();
131
+ _this2.dialogPoi.removeFromParent();
132
+ _this2.dialogPoi = null;
133
+ _this2.reset();
134
+ });
135
+ }
136
+ }]);
137
+ return PoiManage;
138
+ }();
139
+ export default PoiManage;
140
+ //# sourceMappingURL=poi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Vector3","utils","EPoiType","Poi","regionMap","POI_IMG","PoiManage","gobal","Map","scene","wallManage","wall","interactionManager","storeManagement","get","Object","keys","forEach","key","region","option","scale","id","width","height","img","poi","Line","sprite","create","title","position","copy","fromArray","add","poiMesh","set","changeWallState","show","dialogPoi","visible","wallMesh","addEventListener","event","reset","addDialogPanel","point","removeFromParent","setVisible","data","Panel","content","print","clone","remove"],"sources":["../../../src/factory/unit/poi.ts"],"sourcesContent":["import type { InteractionManager, Object3D, Scene, Sprite } from '@anov/3d-core'\nimport { Mesh, MeshBasicMaterial, PlaneGeometry, Vector3, utils } from '@anov/3d-core'\nimport { EPoiType, Poi } from '@anov/3d-ability'\nimport type Factory3D from '../3d'\nimport { regionMap } from '../regionData'\nimport { POI_IMG } from '../utils/base64'\nimport type WallManage from './wall'\n\nclass PoiManage {\n private gobal: Factory3D\n private scene: Scene\n private dialogPoi: Object3D\n readonly poiMesh: Map<string, Object3D> = new Map()\n private wallManage: WallManage\n private interactionManager\n\n constructor(gobal) {\n this.gobal = gobal\n this.scene = gobal.scene.scene\n this.wallManage = gobal.wall\n this.interactionManager = utils.storeManagement.get<InteractionManager>('interactionManager')\n }\n\n generatePoi() {\n Object.keys(regionMap).forEach(async (key: string) => {\n const region = regionMap[key]\n const option = {\n scale: 80,\n ...((region.id === '4' || region.id === '5') && {\n width: 260,\n height: 260,\n img: POI_IMG,\n }),\n }\n\n const poi = new Poi(EPoiType.Line)\n const sprite = poi.create(region.title, option) as Sprite\n sprite.position.copy(new Vector3().fromArray(region.poi.position))\n\n this.scene.add(sprite)\n this.poiMesh.set(region.poi.id, sprite)\n\n // 绑定事件\n this.interactionManager.add(sprite)\n const changeWallState = (show) => {\n if (this.dialogPoi?.visible)\n return\n // 光墙\n const wall = this.wallManage.wallMesh.get(region.id)\n wall.visible = show\n }\n\n sprite.addEventListener('mouseover', () => {\n if (!sprite.visible)\n return\n changeWallState(true)\n })\n sprite.addEventListener('mouseout', () => {\n changeWallState(false)\n })\n sprite.addEventListener('click', (event) => {\n if (!sprite.visible)\n return\n this.reset()\n // 光墙\n const wall = this.wallManage.wallMesh.get(region.id)\n wall.visible = true\n // 隐藏当前POI点\n sprite.visible = false\n this.addDialogPanel(region, event.point)\n })\n })\n }\n\n setVisible(visible = true) {\n // 控制POI点的隐藏、显示\n this.poiMesh.forEach((poi) => {\n poi.visible = visible\n })\n // 移除面板\n if (this.dialogPoi)\n this.dialogPoi.removeFromParent()\n }\n\n reset() {\n // 控制POI点的隐藏、显示\n this.setVisible(true)\n // 控制光墙的隐藏、显示\n this.wallManage?.wallMesh.forEach((wall) => {\n wall.visible = false\n })\n }\n\n private addDialogPanel(data, position) {\n // 添加面板\n const poi = new Poi(EPoiType.Panel)\n this.dialogPoi = poi.create({ title: data.title, content: data.poi.content }, { print: true })\n this.dialogPoi.position.copy(position.clone().add(new Vector3(-30, 30, 0)))\n this.scene.add(this.dialogPoi)\n\n this.interactionManager.add(this.dialogPoi)\n this.dialogPoi.addEventListener('click', (event) => {\n this.dialogPoi.remove()\n this.dialogPoi.removeFromParent()\n this.dialogPoi = null\n this.reset()\n })\n }\n}\n\nexport default PoiManage"],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type Factory3D from '../3d';
2
+ declare class PointManage {
3
+ private pointGroupMap;
4
+ private scene;
5
+ private gobal;
6
+ private peoplePoi;
7
+ constructor(gobal: Factory3D);
8
+ generatePoint(): void;
9
+ }
10
+ export default PointManage;
@@ -0,0 +1,71 @@
1
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
2
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
3
+ 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, _toPropertyKey(descriptor.key), descriptor); } }
4
+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
5
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
6
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
7
+ function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
8
+ import { AdditiveBlending, BufferAttribute, BufferGeometry, Color, Group, Points, ShaderMaterial } from '@anov/3d-core';
9
+ import { EPoiType, Poi } from '@anov/3d-ability';
10
+ import vertexShader from "./glsl/point/vertex.glsl";
11
+ import fragmentShader from "./glsl/point/fragment.glsl";
12
+ var data = {
13
+ 重整装置区: [{
14
+ id: 2,
15
+ name: 'xxx',
16
+ position: [15.23, -0.00, 158.30]
17
+ }]
18
+ };
19
+ var PointManage = /*#__PURE__*/function () {
20
+ function PointManage(gobal) {
21
+ _classCallCheck(this, PointManage);
22
+ _defineProperty(this, "pointGroupMap", new Map());
23
+ _defineProperty(this, "scene", void 0);
24
+ _defineProperty(this, "gobal", void 0);
25
+ _defineProperty(this, "peoplePoi", void 0);
26
+ this.gobal = gobal;
27
+ this.scene = gobal.scene.scene;
28
+ }
29
+ _createClass(PointManage, [{
30
+ key: "generatePoint",
31
+ value: function generatePoint() {
32
+ var _this = this;
33
+ var _loop = function _loop() {
34
+ var group = new Group();
35
+ data[key].forEach(function (item) {
36
+ var geometry = new BufferGeometry();
37
+ geometry.setAttribute('position', new BufferAttribute(new Float32Array(item.position), 3));
38
+ var point = new Points(geometry, new ShaderMaterial({
39
+ vertexShader: vertexShader,
40
+ fragmentShader: fragmentShader,
41
+ uniforms: {
42
+ color: {
43
+ value: new Color('yellow')
44
+ }
45
+ },
46
+ transparent: true,
47
+ depthWrite: false,
48
+ depthTest: false,
49
+ blending: AdditiveBlending
50
+ }));
51
+ _this.gobal.interactionManager.add(point);
52
+ point.addEventListener('mouseover', function () {
53
+ var poi = new Poi(EPoiType.Line);
54
+ _this.peoplePoi = poi.create(item.name);
55
+ _this.peoplePoi.position.copy(point.position);
56
+ _this.scene.add(_this.peoplePoi);
57
+ });
58
+ group.add(point);
59
+ });
60
+ _this.scene.add(group);
61
+ _this.pointGroupMap.set(key, group);
62
+ };
63
+ for (var key in data) {
64
+ _loop();
65
+ }
66
+ }
67
+ }]);
68
+ return PointManage;
69
+ }();
70
+ export default PointManage;
71
+ //# sourceMappingURL=point.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["AdditiveBlending","BufferAttribute","BufferGeometry","Color","Group","Points","ShaderMaterial","EPoiType","Poi","vertexShader","fragmentShader","data","重整装置区","id","name","position","PointManage","gobal","Map","scene","group","key","forEach","item","geometry","setAttribute","Float32Array","point","uniforms","color","value","transparent","depthWrite","depthTest","blending","interactionManager","add","addEventListener","poi","Line","peoplePoi","create","copy","pointGroupMap","set"],"sources":["../../../src/factory/unit/point.ts"],"sourcesContent":["import type { Object3D, Scene } from '@anov/3d-core'\nimport { AdditiveBlending, BufferAttribute, BufferGeometry, Color, Group, Points, ShaderMaterial } from '@anov/3d-core'\nimport { EPoiType, Poi } from '@anov/3d-ability'\nimport type Factory3D from '../3d'\nimport vertexShader from './glsl/point/vertex.glsl'\nimport fragmentShader from './glsl/point/fragment.glsl'\n\nconst data = {\n 重整装置区: [\n {\n id: 2,\n name: 'xxx',\n position: [15.23, -0.00, 158.30],\n },\n ],\n}\n\nclass PointManage {\n private pointGroupMap: Map<string, Group> = new Map()\n private scene: Scene\n private gobal: Factory3D\n private peoplePoi: Object3D\n\n constructor(gobal: Factory3D) {\n this.gobal = gobal\n this.scene = gobal.scene.scene\n }\n\n generatePoint() {\n for (const key in data) {\n const group = new Group()\n\n data[key].forEach((item) => {\n const geometry = new BufferGeometry()\n geometry.setAttribute('position', new BufferAttribute(new Float32Array(item.position), 3))\n\n const point = new Points(geometry,\n new ShaderMaterial({\n vertexShader,\n fragmentShader,\n uniforms: {\n color: { value: new Color('yellow') },\n },\n transparent: true,\n depthWrite: false,\n depthTest: false,\n blending: AdditiveBlending,\n }),\n )\n this.gobal.interactionManager.add(point)\n\n point.addEventListener('mouseover', () => {\n const poi = new Poi(EPoiType.Line)\n this.peoplePoi = poi.create(item.name)\n this.peoplePoi.position.copy(point.position)\n this.scene.add(this.peoplePoi)\n })\n group.add(point)\n })\n\n this.scene.add(group)\n this.pointGroupMap.set(key, group)\n }\n }\n}\n\nexport default PointManage"],"mappings":";;;;;;;AACA,SAASA,gBAAgB,EAAEC,eAAe,EAAEC,cAAc,EAAEC,KAAK,EAAEC,KAAK,EAAEC,MAAM,EAAEC,cAAc,QAAQ,eAAe;AACvH,SAASC,QAAQ,EAAEC,GAAG,QAAQ,kBAAkB;AAEhD,OAAOC,YAAY;AACnB,OAAOC,cAAc;AAErB,IAAMC,IAAI,GAAG;EACXC,KAAK,EAAE,CACL;IACEC,EAAE,EAAE,CAAC;IACLC,IAAI,EAAE,KAAK;IACXC,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM;EACjC,CAAC;AAEL,CAAC;AAAA,IAEKC,WAAW;EAMf,qBAAYC,KAAgB,EAAE;IAAA;IAAA,uCALc,IAAIC,GAAG,EAAE;IAAA;IAAA;IAAA;IAMnD,IAAI,CAACD,KAAK,GAAGA,KAAK;IAClB,IAAI,CAACE,KAAK,GAAGF,KAAK,CAACE,KAAK,CAACA,KAAK;EAChC;EAAC;IAAA;IAAA,OAED,yBAAgB;MAAA;MAAA,6BACU;QACtB,IAAMC,KAAK,GAAG,IAAIhB,KAAK,EAAE;QAEzBO,IAAI,CAACU,GAAG,CAAC,CAACC,OAAO,CAAC,UAACC,IAAI,EAAK;UAC1B,IAAMC,QAAQ,GAAG,IAAItB,cAAc,EAAE;UACrCsB,QAAQ,CAACC,YAAY,CAAC,UAAU,EAAE,IAAIxB,eAAe,CAAC,IAAIyB,YAAY,CAACH,IAAI,CAACR,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;UAE1F,IAAMY,KAAK,GAAG,IAAItB,MAAM,CAACmB,QAAQ,EAC/B,IAAIlB,cAAc,CAAC;YACjBG,YAAY,EAAZA,YAAY;YACZC,cAAc,EAAdA,cAAc;YACdkB,QAAQ,EAAE;cACRC,KAAK,EAAE;gBAAEC,KAAK,EAAE,IAAI3B,KAAK,CAAC,QAAQ;cAAE;YACtC,CAAC;YACD4B,WAAW,EAAE,IAAI;YACjBC,UAAU,EAAE,KAAK;YACjBC,SAAS,EAAE,KAAK;YAChBC,QAAQ,EAAElC;UACZ,CAAC,CAAC,CACH;UACD,KAAI,CAACiB,KAAK,CAACkB,kBAAkB,CAACC,GAAG,CAACT,KAAK,CAAC;UAExCA,KAAK,CAACU,gBAAgB,CAAC,WAAW,EAAE,YAAM;YACxC,IAAMC,GAAG,GAAG,IAAI9B,GAAG,CAACD,QAAQ,CAACgC,IAAI,CAAC;YAClC,KAAI,CAACC,SAAS,GAAGF,GAAG,CAACG,MAAM,CAAClB,IAAI,CAACT,IAAI,CAAC;YACtC,KAAI,CAAC0B,SAAS,CAACzB,QAAQ,CAAC2B,IAAI,CAACf,KAAK,CAACZ,QAAQ,CAAC;YAC5C,KAAI,CAACI,KAAK,CAACiB,GAAG,CAAC,KAAI,CAACI,SAAS,CAAC;UAChC,CAAC,CAAC;UACFpB,KAAK,CAACgB,GAAG,CAACT,KAAK,CAAC;QAClB,CAAC,CAAC;QAEF,KAAI,CAACR,KAAK,CAACiB,GAAG,CAAChB,KAAK,CAAC;QACrB,KAAI,CAACuB,aAAa,CAACC,GAAG,CAACvB,GAAG,EAAED,KAAK,CAAC;MACpC,CAAC;MAjCD,KAAK,IAAMC,GAAG,IAAIV,IAAI;QAAA;MAAA;IAkCxB;EAAC;EAAA;AAAA;AAGH,eAAeK,WAAW"}
@@ -0,0 +1,14 @@
1
+ import type { Object3D } from '@anov/3d-core';
2
+ import type Factory3D from '../3d';
3
+ declare type WallManageOption = {
4
+ visible?: boolean;
5
+ };
6
+ declare class WallManage {
7
+ private scene;
8
+ readonly wallMesh: Map<string, Object3D>;
9
+ private option;
10
+ private time;
11
+ constructor(gobal: Factory3D, options?: WallManageOption);
12
+ generateWall(): void;
13
+ }
14
+ export default WallManage;
@@ -0,0 +1,113 @@
1
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
2
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
3
+ 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, _toPropertyKey(descriptor.key), descriptor); } }
4
+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
5
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
6
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
7
+ function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
8
+ import { createRoundLineWallMesh } from '@anov/3d-ability';
9
+ import { ShaderMaterial, Vector3 } from '@anov/3d-core';
10
+ import regionMap from "../regionData";
11
+ var wallPosition = [{
12
+ label: regionMap.reform.title,
13
+ id: '1',
14
+ belongTo: regionMap.reform.id,
15
+ points: regionMap.reform.area
16
+ }, {
17
+ label: regionMap.reduction.title,
18
+ id: '2',
19
+ belongTo: regionMap.reduction.id,
20
+ points: regionMap.reduction.area
21
+ }, {
22
+ label: regionMap.crudeOil.title,
23
+ id: '3',
24
+ belongTo: regionMap.crudeOil.id,
25
+ points: regionMap.crudeOil.area
26
+ }, {
27
+ label: regionMap.catalyticCracking.title,
28
+ id: '4',
29
+ belongTo: regionMap.catalyticCracking.id,
30
+ points: regionMap.catalyticCracking.area
31
+ }, {
32
+ label: regionMap.hydrocrackingUnit.title,
33
+ id: '5',
34
+ belongTo: regionMap.hydrocrackingUnit.id,
35
+ points: regionMap.hydrocrackingUnit.area
36
+ }, {
37
+ label: regionMap.cokingUnit.title,
38
+ id: '6',
39
+ belongTo: regionMap.cokingUnit.id,
40
+ points: regionMap.cokingUnit.area
41
+ }, {
42
+ label: regionMap.administrative.title,
43
+ id: '7',
44
+ belongTo: regionMap.administrative.id,
45
+ points: regionMap.administrative.area
46
+ }];
47
+ var walllMaterial = new ShaderMaterial({
48
+ uniforms: {
49
+ iTime: {
50
+ value: 0
51
+ },
52
+ size: {
53
+ value: 16.0
54
+ },
55
+ width: {
56
+ value: 0.4
57
+ },
58
+ speed: {
59
+ value: 1.0
60
+ },
61
+ alpha: {
62
+ value: 0.2
63
+ },
64
+ color1: {
65
+ value: [0.0, 0.9, 0.0]
66
+ },
67
+ color2: {
68
+ value: [0.0, 0.2, 0.8]
69
+ }
70
+ },
71
+ vertexShader: "varying vec2 vUv;\n\n void main(){\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n }",
72
+ fragmentShader: "uniform float iTime;\n uniform float size;////\u5FAA\u73AF\n uniform float width;///\u5BBD\u5EA6\n uniform float speed;///\u901F\u5EA6\n uniform float alpha;///\u900F\u660E\u5EA6\n uniform vec3 color1;///\u989C\u82721\n uniform vec3 color2;///\u989C\u82722\n varying vec2 vUv;\n \n vec3 colorfix(vec3 color) {\n return vec3(color.r, color.g, color.b);\n }\n \n void mainImage(out vec4 fragColor, in vec2 fragCoord) {\n vec2 uv = vUv;\n vec2 wallUV = uv;\n wallUV.y *= size;\n \n float fwallUV = floor(fract(wallUV.y - iTime * speed) + width);\n float dis = 1. - max((uv.y * 8. - 7.), 1. - (uv.y * 8.));\n float dis2 = 1. - (uv.y * 4. - 3.);\n vec3 col = color1 * dis2 + color2 * (1. - dis2);\n fragColor = vec4(col, fwallUV * alpha * dis);\n }\n \n void main() {\n vec2 fragCoord = gl_FragCoord.xy;\n mainImage(gl_FragColor, fragCoord);\n }\n \n ",
73
+ transparent: true,
74
+ side: 2,
75
+ depthTest: false
76
+ });
77
+ var WallManage = /*#__PURE__*/function () {
78
+ function WallManage(gobal, options) {
79
+ _classCallCheck(this, WallManage);
80
+ _defineProperty(this, "scene", void 0);
81
+ _defineProperty(this, "wallMesh", new Map());
82
+ _defineProperty(this, "option", void 0);
83
+ _defineProperty(this, "time", 0);
84
+ this.scene = gobal.scene.scene;
85
+ this.option = options || {};
86
+ }
87
+ _createClass(WallManage, [{
88
+ key: "generateWall",
89
+ value: function generateWall() {
90
+ var _this = this;
91
+ // setInterval(() => {
92
+ // this.time += 0.001
93
+ // walllMaterial.uniforms.iTime.value = this.time
94
+ // })
95
+
96
+ wallPosition.forEach(function (item) {
97
+ var _this$option$visible, _this$option;
98
+ var roundLineMesh = createRoundLineWallMesh(item.points.map(function (v) {
99
+ return new Vector3(v[0], v[1], v[2]);
100
+ }), {
101
+ radius: 0,
102
+ close: true
103
+ }, walllMaterial);
104
+ roundLineMesh.visible = (_this$option$visible = (_this$option = _this.option) === null || _this$option === void 0 ? void 0 : _this$option.visible) !== null && _this$option$visible !== void 0 ? _this$option$visible : true;
105
+ _this.wallMesh.set(item.id, roundLineMesh);
106
+ _this.scene.add(roundLineMesh);
107
+ });
108
+ }
109
+ }]);
110
+ return WallManage;
111
+ }();
112
+ export default WallManage;
113
+ //# sourceMappingURL=wall.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createRoundLineWallMesh","ShaderMaterial","Vector3","regionMap","wallPosition","label","reform","title","id","belongTo","points","area","reduction","crudeOil","catalyticCracking","hydrocrackingUnit","cokingUnit","administrative","walllMaterial","uniforms","iTime","value","size","width","speed","alpha","color1","color2","vertexShader","fragmentShader","transparent","side","depthTest","WallManage","gobal","options","Map","scene","option","forEach","item","roundLineMesh","map","v","radius","close","visible","wallMesh","set","add"],"sources":["../../../src/factory/unit/wall.ts"],"sourcesContent":["import { createRoundLineWallMesh } from '@anov/3d-ability'\nimport type { Object3D, Scene } from '@anov/3d-core'\nimport { ShaderMaterial, Vector3 } from '@anov/3d-core'\nimport type Factory3D from '../3d'\nimport regionMap from '../regionData'\n\nconst wallPosition = [\n {\n label: regionMap.reform.title,\n id: '1',\n belongTo: regionMap.reform.id,\n points: regionMap.reform.area,\n },\n {\n label: regionMap.reduction.title,\n id: '2',\n belongTo: regionMap.reduction.id,\n points: regionMap.reduction.area,\n },\n {\n label: regionMap.crudeOil.title,\n id: '3',\n belongTo: regionMap.crudeOil.id,\n points: regionMap.crudeOil.area,\n },\n {\n label: regionMap.catalyticCracking.title,\n id: '4',\n belongTo: regionMap.catalyticCracking.id,\n points: regionMap.catalyticCracking.area,\n },\n {\n label: regionMap.hydrocrackingUnit.title,\n id: '5',\n belongTo: regionMap.hydrocrackingUnit.id,\n points: regionMap.hydrocrackingUnit.area,\n },\n {\n label: regionMap.cokingUnit.title,\n id: '6',\n belongTo: regionMap.cokingUnit.id,\n points: regionMap.cokingUnit.area,\n },\n {\n label: regionMap.administrative.title,\n id: '7',\n belongTo: regionMap.administrative.id,\n points: regionMap.administrative.area,\n },\n]\n\nconst walllMaterial = new ShaderMaterial({\n uniforms: {\n iTime: {\n value: 0,\n },\n size: {\n value: 16.0,\n },\n width: {\n value: 0.4,\n },\n speed: {\n value: 1.0,\n },\n alpha: {\n value: 0.2,\n },\n color1: {\n value: [0.0, 0.9, 0.0],\n },\n color2: {\n value: [0.0, 0.2, 0.8],\n },\n },\n vertexShader: `varying vec2 vUv;\n\n void main(){\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n }`,\n fragmentShader: `uniform float iTime;\n uniform float size;////循环\n uniform float width;///宽度\n uniform float speed;///速度\n uniform float alpha;///透明度\n uniform vec3 color1;///颜色1\n uniform vec3 color2;///颜色2\n varying vec2 vUv;\n \n vec3 colorfix(vec3 color) {\n return vec3(color.r, color.g, color.b);\n }\n \n void mainImage(out vec4 fragColor, in vec2 fragCoord) {\n vec2 uv = vUv;\n vec2 wallUV = uv;\n wallUV.y *= size;\n \n float fwallUV = floor(fract(wallUV.y - iTime * speed) + width);\n float dis = 1. - max((uv.y * 8. - 7.), 1. - (uv.y * 8.));\n float dis2 = 1. - (uv.y * 4. - 3.);\n vec3 col = color1 * dis2 + color2 * (1. - dis2);\n fragColor = vec4(col, fwallUV * alpha * dis);\n }\n \n void main() {\n vec2 fragCoord = gl_FragCoord.xy;\n mainImage(gl_FragColor, fragCoord);\n }\n \n `,\n transparent: true,\n side: 2,\n depthTest: false,\n})\n\ntype WallManageOption = {\n visible?: boolean\n}\nclass WallManage {\n private scene: Scene\n readonly wallMesh: Map<string, Object3D> = new Map()\n private option: WallManageOption\n\n private time = 0\n\n constructor(gobal: Factory3D, options?: WallManageOption) {\n this.scene = gobal.scene.scene\n this.option = options || {}\n }\n\n generateWall() {\n // setInterval(() => {\n // this.time += 0.001\n // walllMaterial.uniforms.iTime.value = this.time\n // })\n\n wallPosition.forEach((item) => {\n const roundLineMesh = createRoundLineWallMesh(item.points.map(v => new Vector3(v[0], v[1], v[2])), {\n radius: 0,\n close: true,\n }, walllMaterial)\n roundLineMesh.visible = this.option?.visible ?? true\n this.wallMesh.set(item.id, roundLineMesh)\n this.scene.add(roundLineMesh)\n })\n }\n}\n\nexport default WallManage"],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { Box3, Vector3 } from '@anov/3d-core';
2
+ /**
3
+ * create areaBounding box
4
+ * @param points
5
+ * @param height
6
+ */
7
+ export declare const createAreaBoundingBox: (points: number[][], height: number) => Box3;
8
+ /**
9
+ * collisionDetection
10
+ * @param box
11
+ * @param position
12
+ * @returns
13
+ */
14
+ export declare const collisionDetection: (box: Box3, position: Vector3) => boolean;
@@ -0,0 +1,39 @@
1
+ import { Box3, Vector3 } from '@anov/3d-core';
2
+ import { createRoundLineWallMesh } from '@anov/3d-ability';
3
+
4
+ /**
5
+ * create areaBounding box
6
+ * @param points
7
+ * @param height
8
+ */
9
+ export var createAreaBoundingBox = function createAreaBoundingBox(points, height) {
10
+ var mesh = createRoundLineWallMesh(points.map(function (item) {
11
+ return new Vector3().fromArray([item[0], item[1], item[2]]);
12
+ }), {
13
+ radius: 0,
14
+ close: true,
15
+ height: height
16
+ });
17
+ var box = new Box3();
18
+ box.setFromObject(mesh);
19
+ var center = new Vector3();
20
+ box.getCenter(center);
21
+ var size = new Vector3();
22
+ box.getSize(size);
23
+ var newSize = size.multiplyScalar(3);
24
+ var newMin = center.clone().sub(newSize.clone().divideScalar(2));
25
+ var newMax = center.clone().add(newSize.clone().divideScalar(2));
26
+ box.set(newMin, newMax);
27
+ return box;
28
+ };
29
+
30
+ /**
31
+ * collisionDetection
32
+ * @param box
33
+ * @param position
34
+ * @returns
35
+ */
36
+ export var collisionDetection = function collisionDetection(box, position) {
37
+ return box.containsPoint(position);
38
+ };
39
+ //# sourceMappingURL=areaBoundingBox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Box3","Vector3","createRoundLineWallMesh","createAreaBoundingBox","points","height","mesh","map","item","fromArray","radius","close","box","setFromObject","center","getCenter","size","getSize","newSize","multiplyScalar","newMin","clone","sub","divideScalar","newMax","add","set","collisionDetection","position","containsPoint"],"sources":["../../../src/factory/utils/areaBoundingBox.ts"],"sourcesContent":["import { Box3, Vector3 } from '@anov/3d-core'\nimport { createRoundLineWallMesh } from '@anov/3d-ability'\n\n/**\n * create areaBounding box\n * @param points\n * @param height\n */\nexport const createAreaBoundingBox = (points: number[][], height: number) => {\n const mesh = createRoundLineWallMesh(\n points.map((item) => {\n return new Vector3().fromArray([item[0], item[1], item[2]])\n }),\n {\n radius: 0,\n close: true,\n height,\n },\n )\n\n const box = new Box3()\n\n box.setFromObject(mesh)\n\n const center = new Vector3()\n box.getCenter(center)\n\n const size = new Vector3()\n box.getSize(size)\n\n const newSize = size.multiplyScalar(3)\n\n const newMin = center.clone().sub(newSize.clone().divideScalar(2))\n const newMax = center.clone().add(newSize.clone().divideScalar(2))\n\n box.set(newMin, newMax)\n\n return box\n}\n\n/**\n * collisionDetection\n * @param box\n * @param position\n * @returns\n */\nexport const collisionDetection = (box: Box3, position: Vector3) => {\n return box.containsPoint(position)\n}\n"],"mappings":"AAAA,SAASA,IAAI,EAAEC,OAAO,QAAQ,eAAe;AAC7C,SAASC,uBAAuB,QAAQ,kBAAkB;;AAE1D;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMC,qBAAqB,GAAG,SAAxBA,qBAAqB,CAAIC,MAAkB,EAAEC,MAAc,EAAK;EAC3E,IAAMC,IAAI,GAAGJ,uBAAuB,CAClCE,MAAM,CAACG,GAAG,CAAC,UAACC,IAAI,EAAK;IACnB,OAAO,IAAIP,OAAO,EAAE,CAACQ,SAAS,CAAC,CAACD,IAAI,CAAC,CAAC,CAAC,EAAEA,IAAI,CAAC,CAAC,CAAC,EAAEA,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;EAC7D,CAAC,CAAC,EACF;IACEE,MAAM,EAAE,CAAC;IACTC,KAAK,EAAE,IAAI;IACXN,MAAM,EAANA;EACF,CAAC,CACF;EAED,IAAMO,GAAG,GAAG,IAAIZ,IAAI,EAAE;EAEtBY,GAAG,CAACC,aAAa,CAACP,IAAI,CAAC;EAEvB,IAAMQ,MAAM,GAAG,IAAIb,OAAO,EAAE;EAC5BW,GAAG,CAACG,SAAS,CAACD,MAAM,CAAC;EAErB,IAAME,IAAI,GAAG,IAAIf,OAAO,EAAE;EAC1BW,GAAG,CAACK,OAAO,CAACD,IAAI,CAAC;EAEjB,IAAME,OAAO,GAAGF,IAAI,CAACG,cAAc,CAAC,CAAC,CAAC;EAEtC,IAAMC,MAAM,GAAGN,MAAM,CAACO,KAAK,EAAE,CAACC,GAAG,CAACJ,OAAO,CAACG,KAAK,EAAE,CAACE,YAAY,CAAC,CAAC,CAAC,CAAC;EAClE,IAAMC,MAAM,GAAGV,MAAM,CAACO,KAAK,EAAE,CAACI,GAAG,CAACP,OAAO,CAACG,KAAK,EAAE,CAACE,YAAY,CAAC,CAAC,CAAC,CAAC;EAElEX,GAAG,CAACc,GAAG,CAACN,MAAM,EAAEI,MAAM,CAAC;EAEvB,OAAOZ,GAAG;AACZ,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMe,kBAAkB,GAAG,SAArBA,kBAAkB,CAAIf,GAAS,EAAEgB,QAAiB,EAAK;EAClE,OAAOhB,GAAG,CAACiB,aAAa,CAACD,QAAQ,CAAC;AACpC,CAAC"}
@@ -0,0 +1 @@
1
+ export declare const POI_IMG = "data:image/png;base64,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";
@@ -0,0 +1,2 @@
1
+ export var POI_IMG = 'data:image/png;base64,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';
2
+ //# sourceMappingURL=base64.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["POI_IMG"],"sources":["../../../src/factory/utils/base64.ts"],"sourcesContent":["export const POI_IMG = 'data:image/png;base64,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'"],"mappings":"AAAA,OAAO,IAAMA,OAAO,GAAG,g8QAAg8Q"}
@@ -0,0 +1,3 @@
1
+ import { MeshStandardMaterial, ShaderMaterial } from '@anov/3d-core';
2
+ export declare const finirMaterialV2: ShaderMaterial;
3
+ export declare const finirMaterialV1: MeshStandardMaterial;
@@ -0,0 +1,39 @@
1
+ import { Color, MeshStandardMaterial, ShaderMaterial, Vector3 } from '@anov/3d-core';
2
+ export var finirMaterialV2 = new ShaderMaterial({
3
+ uniforms: {
4
+ // 在这里定义uniform变量,用于控制透明度、边缘和反光效果
5
+ edgeColor: {
6
+ value: new Vector3(1.0, 0.0, 0.0)
7
+ },
8
+ // 边缘颜色
9
+ edgeThickness: {
10
+ value: 0.03
11
+ },
12
+ // 边缘厚度0.05
13
+ reflectionStrength: {
14
+ value: 100
15
+ } // 反光强度0.9
16
+ },
17
+
18
+ vertexShader: "\n varying vec3 vNormal;\n\n void main() {\n vNormal = normal;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n }\n ",
19
+ fragmentShader: "\n varying vec3 vNormal;\n uniform vec3 edgeColor;\n uniform float edgeThickness;\n uniform float reflectionStrength;\n\n void main() {\n // \u8BA1\u7B97\u900F\u660E\u5EA6\n float alpha = 0.9; // \u900F\u660E\u5EA6\u7684\u57FA\u7840\u503C\n\n // \u8BA1\u7B97\u8FB9\u7F18\u6548\u679C\n float edge = fwidth(length(vNormal));\n alpha *= smoothstep(0.0, edgeThickness, edge);\n\n // \u8BA1\u7B97\u53CD\u5149\u6548\u679C\n vec3 reflection = reflect(normalize(-vNormal), vec3(0.455, 0.749, 0.890));\n float reflectionIntensity = max(dot(reflection, normalize(-vNormal)), 0.0);\n vec3 reflectionColor = reflectionStrength * reflectionIntensity * edgeColor;\n\n // \u6700\u7EC8\u989C\u8272\u8BBE\u7F6E\u4E3A\"#74bfe3\"\n vec3 finalColor = vec3(0.8, 0.25, 0.145); // \"#74bfe3\"\u7684RGB\u503C\n finalColor += reflectionColor; // \u6DFB\u52A0\u53CD\u5149\u6548\u679C\n\n // \u8BBE\u7F6E\u900F\u660E\u5EA6\n gl_FragColor = vec4(finalColor, alpha);\n }\n ",
20
+ transparent: true,
21
+ depthWrite: false
22
+ });
23
+ export var finirMaterialV1 = new MeshStandardMaterial({
24
+ /// /这个没有沟边粗细
25
+ opacity: 0.0,
26
+ transparent: true,
27
+ depthWrite: false
28
+ });
29
+ finirMaterialV1.onBeforeCompile = function (shader) {
30
+ shader.uniforms.rimColor = {
31
+ value: new Color('#99C9E3')
32
+ };
33
+ shader.uniforms.rimPower = {
34
+ value: 0.9
35
+ };
36
+ shader.fragmentShader = shader.fragmentShader.replace('void main() {', ['uniform vec3 rimColor;', ' uniform float rimPower;', 'void main() {'].join('\n'));
37
+ shader.fragmentShader = shader.fragmentShader.replace('#include <dithering_fragment>', "#include <dithering_fragment>\n float dotNV = 1.0-saturate( dot( normal, geometry.viewDir ) );\n gl_FragColor.rgb += rimPower*dotNV*rimColor;\n vec3 fresnelall =rimPower*dotNV*rimColor;\n gl_FragColor.a +=(fresnelall.r+fresnelall.g+fresnelall.b)/3.;");
38
+ };
39
+ //# sourceMappingURL=finirMaterial.js.map