@anov/3d-ability 0.0.4-alpha7 → 0.0.4-alpha9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/animation/index.d.ts +0 -1
- package/dist/animation/index.js +1 -1
- package/dist/animation/index.js.map +1 -1
- package/dist/camera/index.d.ts +65 -0
- package/dist/camera/index.js +239 -0
- package/dist/camera/index.js.map +1 -0
- package/dist/city/flyinglead.d.ts +0 -0
- package/dist/city/radar.d.ts +0 -0
- package/dist/city/scanning.d.ts +0 -0
- package/dist/city/surroundLine.d.ts +0 -0
- package/dist/core/mouseDrawe.d.ts +2 -0
- package/dist/environment/cloud/cloud.d.ts +1 -0
- package/dist/environment/cloud/index.d.ts +7 -0
- package/dist/environment/rain.d.ts +20 -0
- package/dist/environment/rainShader/shader.d.ts +26 -0
- package/dist/environment/shaderCloud/cloudMaterial.d.ts +10 -0
- package/dist/environment/shaderCloud/shader.d.ts +5 -0
- package/dist/environment/sky/index.js +10 -13
- package/dist/environment/sky/index.js.map +1 -1
- package/dist/environment/skyBox/index.d.ts +41 -0
- package/dist/environment/skyBox/index.js +150 -0
- package/dist/environment/skyBox/index.js.map +1 -0
- package/dist/environment/snow.js +2 -0
- package/dist/environment/snow.js.map +1 -1
- package/dist/environment/sun/index.d.ts +13 -0
- package/dist/environment/volumetricCloud/cloudMaterial.d.ts +3 -0
- package/dist/environment/volumetricCloud/inex.d.ts +8 -0
- package/dist/heatmap/index.d.ts +9 -0
- package/dist/heatmap/index.js +138 -0
- package/dist/heatmap/index.js.map +1 -0
- package/dist/helper/view/index.d.ts +40 -0
- package/dist/helper/view/utils.d.ts +6 -0
- package/dist/index.d.ts +8 -4
- package/dist/index.js +8 -4
- package/dist/index.js.map +1 -1
- package/dist/line/curve.d.ts +33 -0
- package/dist/line/curve.js +71 -0
- package/dist/line/curve.js.map +1 -0
- package/dist/line/index.d.ts +0 -0
- package/dist/line/index.js +2 -0
- package/dist/line/index.js.map +1 -0
- package/dist/line/round-curve.d.ts +19 -0
- package/dist/line/round-curve.js +212 -0
- package/dist/line/round-curve.js.map +1 -0
- package/dist/material/finirMaterialMaterial/index.d.ts +9 -0
- package/dist/material/finirMaterialMaterial/index.js +47 -0
- package/dist/material/finirMaterialMaterial/index.js.map +1 -0
- package/dist/material/pristineGridMaterial/index.d.ts +20 -0
- package/dist/material/pristineGridMaterial/shader/fragment.d.ts +2 -0
- package/dist/material/pristineGridMaterial/shader/vertex.d.ts +2 -0
- package/dist/poi/core/Base.d.ts +7 -0
- package/dist/poi/core/Base.js +24 -0
- package/dist/poi/core/Base.js.map +1 -0
- package/dist/poi/core/Css2D.d.ts +20 -0
- package/dist/poi/core/Css2D.js +181 -0
- package/dist/poi/core/Css2D.js.map +1 -0
- package/dist/poi/core/Css3D.d.ts +1 -0
- package/dist/poi/core/Css3D.js +24 -0
- package/dist/poi/core/Css3D.js.map +1 -0
- package/dist/poi/core/Sprite.d.ts +11 -0
- package/dist/poi/core/Sprite.js +134 -0
- package/dist/poi/core/Sprite.js.map +1 -0
- package/dist/poi/core/SpriteBase.d.ts +11 -0
- package/dist/poi/core/SpriteBase.js +58 -0
- package/dist/poi/core/SpriteBase.js.map +1 -0
- package/dist/poi/index.d.ts +9 -16
- package/dist/poi/index.js +11 -96
- package/dist/poi/index.js.map +1 -1
- package/dist/poi/utils/base64.d.ts +3 -0
- package/dist/poi/utils/base64.js +4 -0
- package/dist/poi/utils/base64.js.map +1 -0
- package/dist/poi/utils/canvas.d.ts +3 -0
- package/dist/poi/utils/canvas.js +68 -0
- package/dist/poi/utils/canvas.js.map +1 -0
- package/dist/poi/utils/css.d.ts +35 -0
- package/dist/poi/utils/css.js +41 -0
- package/dist/poi/utils/css.js.map +1 -0
- package/dist/poi/utils/type.d.ts +35 -0
- package/dist/poi/utils/type.js +39 -0
- package/dist/poi/utils/type.js.map +1 -0
- package/dist/poiBack/assets.js.map +1 -0
- package/dist/poiBack/dom.js.map +1 -0
- package/dist/poiBack/index.d.ts +19 -0
- package/dist/poiBack/index.js +145 -0
- package/dist/poiBack/index.js.map +1 -0
- package/dist/poiBack/type.js.map +1 -0
- package/dist/postEffects/bloomPass.d.ts +5 -0
- package/dist/postEffects/index.d.ts +11 -0
- package/dist/postEffects/outlinePass.d.ts +16 -0
- package/dist/postEffects/outlinePass.js +7 -1
- package/dist/postEffects/outlinePass.js.map +1 -1
- package/dist/scene/grow/grow.d.ts +10 -0
- package/dist/{animation → scene}/grow/grow.js +66 -33
- package/dist/scene/grow/grow.js.map +1 -0
- package/dist/scene/grow/growStyle.js.map +1 -0
- package/dist/scene/grow/index.js.map +1 -0
- package/dist/{animation → scene}/grow/style_down.d.ts +2 -0
- package/dist/{animation → scene}/grow/style_down.js +22 -21
- package/dist/scene/grow/style_down.js.map +1 -0
- package/dist/{animation → scene}/grow/style_up.d.ts +2 -0
- package/dist/{animation → scene}/grow/style_up.js +24 -22
- package/dist/scene/grow/style_up.js.map +1 -0
- package/dist/{animation → scene}/grow/type.d.ts +12 -11
- package/dist/scene/grow/type.js.map +1 -0
- package/dist/scene/index.d.ts +1 -0
- package/dist/scene/index.js +2 -0
- package/dist/scene/index.js.map +1 -0
- package/dist/utils/index.d.ts +1 -0
- package/package.json +10 -3
- package/dist/animation/grow/grow.d.ts +0 -10
- package/dist/animation/grow/grow.js.map +0 -1
- package/dist/animation/grow/growStyle.js.map +0 -1
- package/dist/animation/grow/index.js.map +0 -1
- package/dist/animation/grow/style_down.js.map +0 -1
- package/dist/animation/grow/style_up.js.map +0 -1
- package/dist/animation/grow/type.js.map +0 -1
- package/dist/poi/assets.js.map +0 -1
- package/dist/poi/dom.js.map +0 -1
- package/dist/poi/type.js.map +0 -1
- /package/dist/{poi → poiBack}/assets.d.ts +0 -0
- /package/dist/{poi → poiBack}/assets.js +0 -0
- /package/dist/{poi → poiBack}/dom.d.ts +0 -0
- /package/dist/{poi → poiBack}/dom.js +0 -0
- /package/dist/{poi → poiBack}/type.d.ts +0 -0
- /package/dist/{poi → poiBack}/type.js +0 -0
- /package/dist/{animation → scene}/grow/growStyle.d.ts +0 -0
- /package/dist/{animation → scene}/grow/growStyle.js +0 -0
- /package/dist/{animation → scene}/grow/index.d.ts +0 -0
- /package/dist/{animation → scene}/grow/index.js +0 -0
- /package/dist/{animation → scene}/grow/type.js +0 -0
package/dist/index.js
CHANGED
|
@@ -13,11 +13,15 @@ import createVolumetricCloud from "./environment/volumetricCloud/inex";
|
|
|
13
13
|
import createSkyCloud from "./environment/shaderCloud/index";
|
|
14
14
|
import Snow from "./environment/showShader";
|
|
15
15
|
import Rain from "./environment/rainShader";
|
|
16
|
-
import Poi from "./poi
|
|
17
|
-
|
|
16
|
+
import Poi, { EPoiType } from "./poi";
|
|
17
|
+
import HeatMap from "./heatmap/index";
|
|
18
|
+
import SkyBox from "./environment/skyBox";
|
|
19
|
+
import Camera from "./camera/index";
|
|
20
|
+
import { RoundLineGeometry, createRoundLineWallMesh } from "./line/round-curve";
|
|
21
|
+
export * from "./scene";
|
|
18
22
|
export { SceneControl,
|
|
19
23
|
// todo remove
|
|
20
|
-
mouseDraweLine, createRain, createSnow, createCloud, createSun, createSkySystem, createVolumetricCloud, createSkyCloud, Snow, Rain, Poi, initPostEffects,
|
|
24
|
+
mouseDraweLine, createRain, createSnow, createCloud, createSun, createSkySystem, createVolumetricCloud, createSkyCloud, Snow, Rain, Poi, EPoiType, HeatMap, initPostEffects,
|
|
21
25
|
// effect
|
|
22
|
-
createHighSelectedTool, GridMaterial, ViewHelper };
|
|
26
|
+
createHighSelectedTool, GridMaterial, SkyBox, ViewHelper, Camera, RoundLineGeometry, createRoundLineWallMesh };
|
|
23
27
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["SceneControl","mouseDraweLine","createSnow","createRain","createCloud","initPostEffects","createHighSelectedTool","createSun","GridMaterial","ViewHelper","createSkySystem","createVolumetricCloud","createSkyCloud","Snow","Rain","Poi"],"sources":["../src/index.ts"],"sourcesContent":["import { SceneControl } from '@anov/3d-core'\nimport { mouseDraweLine } from './core/mouseDrawe'\nimport { createSnow } from './environment/snow'\nimport { createRain } from './environment/rain'\nimport createCloud from './environment/cloud'\nimport { initPostEffects } from './postEffects'\nimport createHighSelectedTool from './postEffects/outlinePass'\nimport { createSun } from './environment/sun'\nimport GridMaterial from './material/pristineGridMaterial'\nimport ViewHelper from './helper/view'\nimport createSkySystem from './environment/sky'\nimport createVolumetricCloud from './environment/volumetricCloud/inex'\nimport createSkyCloud from './environment/shaderCloud/index'\nimport Snow from './environment/showShader'\nimport Rain from './environment/rainShader'\nimport Poi from './poi/index'\n\nexport * from './
|
|
1
|
+
{"version":3,"names":["SceneControl","mouseDraweLine","createSnow","createRain","createCloud","initPostEffects","createHighSelectedTool","createSun","GridMaterial","ViewHelper","createSkySystem","createVolumetricCloud","createSkyCloud","Snow","Rain","Poi","EPoiType","HeatMap","SkyBox","Camera","RoundLineGeometry","createRoundLineWallMesh"],"sources":["../src/index.ts"],"sourcesContent":["import { SceneControl } from '@anov/3d-core'\nimport { mouseDraweLine } from './core/mouseDrawe'\nimport { createSnow } from './environment/snow'\nimport { createRain } from './environment/rain'\nimport createCloud from './environment/cloud'\nimport { initPostEffects } from './postEffects'\nimport createHighSelectedTool from './postEffects/outlinePass'\nimport { createSun } from './environment/sun'\nimport GridMaterial from './material/pristineGridMaterial'\nimport ViewHelper from './helper/view'\nimport createSkySystem from './environment/sky'\nimport createVolumetricCloud from './environment/volumetricCloud/inex'\nimport createSkyCloud from './environment/shaderCloud/index'\nimport Snow from './environment/showShader'\nimport Rain from './environment/rainShader'\nimport Poi, { EPoiType } from './poi'\nimport HeatMap from './heatmap/index'\nimport SkyBox from './environment/skyBox'\nimport Camera from './camera/index'\nimport { RoundLineGeometry, createRoundLineWallMesh } from './line/round-curve'\n\nexport * from './scene'\n\nexport {\n SceneControl, // todo remove\n mouseDraweLine,\n createRain,\n createSnow,\n createCloud,\n createSun,\n createSkySystem,\n createVolumetricCloud,\n createSkyCloud,\n Snow,\n Rain,\n Poi, EPoiType,\n HeatMap,\n initPostEffects, // effect\n createHighSelectedTool,\n GridMaterial,\n SkyBox,\n ViewHelper,\n Camera,\n RoundLineGeometry,\n createRoundLineWallMesh,\n}\n"],"mappings":"AAAA,SAASA,YAAY,QAAQ,eAAe;AAC5C,SAASC,cAAc;AACvB,SAASC,UAAU;AACnB,SAASC,UAAU;AACnB,OAAOC,WAAW;AAClB,SAASC,eAAe;AACxB,OAAOC,sBAAsB;AAC7B,SAASC,SAAS;AAClB,OAAOC,YAAY;AACnB,OAAOC,UAAU;AACjB,OAAOC,eAAe;AACtB,OAAOC,qBAAqB;AAC5B,OAAOC,cAAc;AACrB,OAAOC,IAAI;AACX,OAAOC,IAAI;AACX,OAAOC,GAAG,IAAIC,QAAQ;AACtB,OAAOC,OAAO;AACd,OAAOC,MAAM;AACb,OAAOC,MAAM;AACb,SAASC,iBAAiB,EAAEC,uBAAuB;AAEnD;AAEA,SACErB,YAAY;AAAE;AACdC,cAAc,EACdE,UAAU,EACVD,UAAU,EACVE,WAAW,EACXG,SAAS,EACTG,eAAe,EACfC,qBAAqB,EACrBC,cAAc,EACdC,IAAI,EACJC,IAAI,EACJC,GAAG,EAAEC,QAAQ,EACbC,OAAO,EACPZ,eAAe;AAAE;AACjBC,sBAAsB,EACtBE,YAAY,EACZU,MAAM,EACNT,UAAU,EACVU,MAAM,EACNC,iBAAiB,EACjBC,uBAAuB"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { Vector3 } from '@anov/3d-core';
|
|
2
|
+
import { Color, Line } from '@anov/3d-core';
|
|
3
|
+
export declare type CurveType = 'CatmullRomCurve3' | 'CubicBezierCurve' | 'CubicBezierCurve3';
|
|
4
|
+
export declare type CurveInterface = {
|
|
5
|
+
curveType?: CurveType;
|
|
6
|
+
points: Vector3[];
|
|
7
|
+
color?: Color;
|
|
8
|
+
pointNum?: number;
|
|
9
|
+
};
|
|
10
|
+
declare class CurveManage {
|
|
11
|
+
points: Vector3[];
|
|
12
|
+
line: Line | null;
|
|
13
|
+
constructor();
|
|
14
|
+
/**
|
|
15
|
+
* create curve
|
|
16
|
+
* @param params
|
|
17
|
+
*/
|
|
18
|
+
createCurve(params: CurveInterface): void;
|
|
19
|
+
/**
|
|
20
|
+
* catmullRomCurve3
|
|
21
|
+
* @param points
|
|
22
|
+
* @returns
|
|
23
|
+
*/
|
|
24
|
+
private createRoundDotsByCatmullRomCurve3;
|
|
25
|
+
/**
|
|
26
|
+
* generate line object3d
|
|
27
|
+
* @param curve
|
|
28
|
+
* @param pointNum
|
|
29
|
+
* @returns
|
|
30
|
+
*/
|
|
31
|
+
private createCurveObject3D;
|
|
32
|
+
}
|
|
33
|
+
export default CurveManage;
|
|
@@ -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 { BufferGeometry, CatmullRomCurve3, Color, Line, LineBasicMaterial } from '@anov/3d-core';
|
|
9
|
+
var CurveManage = /*#__PURE__*/function () {
|
|
10
|
+
function CurveManage() {
|
|
11
|
+
_classCallCheck(this, CurveManage);
|
|
12
|
+
_defineProperty(this, "points", []);
|
|
13
|
+
_defineProperty(this, "line", null);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* create curve
|
|
18
|
+
* @param params
|
|
19
|
+
*/
|
|
20
|
+
_createClass(CurveManage, [{
|
|
21
|
+
key: "createCurve",
|
|
22
|
+
value: function createCurve(params) {
|
|
23
|
+
var _params$curveType = params.curveType,
|
|
24
|
+
curveType = _params$curveType === void 0 ? 'CatmullRomCurve3' : _params$curveType,
|
|
25
|
+
points = params.points,
|
|
26
|
+
_params$color = params.color,
|
|
27
|
+
color = _params$color === void 0 ? new Color(0xFF0000) : _params$color,
|
|
28
|
+
_params$pointNum = params.pointNum,
|
|
29
|
+
pointNum = _params$pointNum === void 0 ? 50 : _params$pointNum;
|
|
30
|
+
|
|
31
|
+
// @ts-ignore
|
|
32
|
+
var curve = this["createRoundDotsBy".concat(curveType)](points);
|
|
33
|
+
this.line = this.createCurveObject3D(curve, pointNum, color);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* catmullRomCurve3
|
|
38
|
+
* @param points
|
|
39
|
+
* @returns
|
|
40
|
+
*/
|
|
41
|
+
}, {
|
|
42
|
+
key: "createRoundDotsByCatmullRomCurve3",
|
|
43
|
+
value: function createRoundDotsByCatmullRomCurve3(points) {
|
|
44
|
+
var curve = new CatmullRomCurve3(points);
|
|
45
|
+
return curve;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* generate line object3d
|
|
50
|
+
* @param curve
|
|
51
|
+
* @param pointNum
|
|
52
|
+
* @returns
|
|
53
|
+
*/
|
|
54
|
+
}, {
|
|
55
|
+
key: "createCurveObject3D",
|
|
56
|
+
value: function createCurveObject3D(curve) {
|
|
57
|
+
var pointNum = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 50;
|
|
58
|
+
var color = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : new Color(0xFF0000);
|
|
59
|
+
var points = curve.getPoints(pointNum);
|
|
60
|
+
this.points = points;
|
|
61
|
+
var geometry = new BufferGeometry().setFromPoints(points);
|
|
62
|
+
var material = new LineBasicMaterial({
|
|
63
|
+
color: color
|
|
64
|
+
});
|
|
65
|
+
return new Line(geometry, material);
|
|
66
|
+
}
|
|
67
|
+
}]);
|
|
68
|
+
return CurveManage;
|
|
69
|
+
}();
|
|
70
|
+
export default CurveManage;
|
|
71
|
+
//# sourceMappingURL=curve.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["BufferGeometry","CatmullRomCurve3","Color","Line","LineBasicMaterial","CurveManage","params","curveType","points","color","pointNum","curve","line","createCurveObject3D","getPoints","geometry","setFromPoints","material"],"sources":["../../src/line/curve.ts"],"sourcesContent":["import type { Curve, Vector3 } from '@anov/3d-core'\nimport { BufferGeometry, CatmullRomCurve3, Color, Line, LineBasicMaterial } from '@anov/3d-core'\n\nexport type CurveType = 'CatmullRomCurve3' | 'CubicBezierCurve' | 'CubicBezierCurve3'\n\nexport type CurveInterface = {\n curveType?: CurveType\n points: Vector3[]\n color?: Color\n pointNum?: number\n}\n\nclass CurveManage {\n points: Vector3[] = []\n\n line: Line | null = null\n\n constructor() { }\n\n /**\n * create curve\n * @param params\n */\n createCurve(params: CurveInterface) {\n const { curveType = 'CatmullRomCurve3', points, color = new Color(0xFF0000), pointNum = 50 } = params\n\n // @ts-ignore\n const curve = this[`createRoundDotsBy${curveType}`](points) as Curve<Vector3>\n\n this.line = this.createCurveObject3D(curve, pointNum, color)\n }\n\n /**\n * catmullRomCurve3\n * @param points\n * @returns\n */\n private createRoundDotsByCatmullRomCurve3(points: Vector3[]) {\n const curve = new CatmullRomCurve3(points)\n\n return curve\n }\n\n /**\n * generate line object3d\n * @param curve\n * @param pointNum\n * @returns\n */\n private createCurveObject3D(curve: Curve<Vector3>, pointNum = 50, color: Color = new Color(0xFF0000)) {\n const points = curve.getPoints(pointNum)\n\n this.points = points\n\n const geometry = new BufferGeometry().setFromPoints(points)\n const material = new LineBasicMaterial({\n color,\n })\n\n return new Line(geometry, material)\n }\n}\n\nexport default CurveManage"],"mappings":";;;;;;;AACA,SAASA,cAAc,EAAEC,gBAAgB,EAAEC,KAAK,EAAEC,IAAI,EAAEC,iBAAiB,QAAQ,eAAe;AAAA,IAW1FC,WAAW;EAKf,uBAAc;IAAA;IAAA,gCAJM,EAAE;IAAA,8BAEF,IAAI;EAER;;EAEhB;AACF;AACA;AACA;EAHE;IAAA;IAAA,OAIA,qBAAYC,MAAsB,EAAE;MAClC,wBAA+FA,MAAM,CAA7FC,SAAS;QAATA,SAAS,kCAAG,kBAAkB;QAAEC,MAAM,GAAiDF,MAAM,CAA7DE,MAAM;QAAA,gBAAiDF,MAAM,CAArDG,KAAK;QAALA,KAAK,8BAAG,IAAIP,KAAK,CAAC,QAAQ,CAAC;QAAA,mBAAoBI,MAAM,CAAxBI,QAAQ;QAARA,QAAQ,iCAAG,EAAE;;MAE1F;MACA,IAAMC,KAAK,GAAG,IAAI,4BAAqBJ,SAAS,EAAG,CAACC,MAAM,CAAmB;MAE7E,IAAI,CAACI,IAAI,GAAG,IAAI,CAACC,mBAAmB,CAACF,KAAK,EAAED,QAAQ,EAAED,KAAK,CAAC;IAC9D;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAA;IAAA,OAKA,2CAA0CD,MAAiB,EAAE;MAC3D,IAAMG,KAAK,GAAG,IAAIV,gBAAgB,CAACO,MAAM,CAAC;MAE1C,OAAOG,KAAK;IACd;;IAEA;AACF;AACA;AACA;AACA;AACA;EALE;IAAA;IAAA,OAMA,6BAA4BA,KAAqB,EAAqD;MAAA,IAAnDD,QAAQ,uEAAG,EAAE;MAAA,IAAED,KAAY,uEAAG,IAAIP,KAAK,CAAC,QAAQ,CAAC;MAClG,IAAMM,MAAM,GAAGG,KAAK,CAACG,SAAS,CAACJ,QAAQ,CAAC;MAExC,IAAI,CAACF,MAAM,GAAGA,MAAM;MAEpB,IAAMO,QAAQ,GAAG,IAAIf,cAAc,EAAE,CAACgB,aAAa,CAACR,MAAM,CAAC;MAC3D,IAAMS,QAAQ,GAAG,IAAIb,iBAAiB,CAAC;QACrCK,KAAK,EAALA;MACF,CAAC,CAAC;MAEF,OAAO,IAAIN,IAAI,CAACY,QAAQ,EAAEE,QAAQ,CAAC;IACrC;EAAC;EAAA;AAAA;AAGH,eAAeZ,WAAW"}
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sources":["../../src/line/index.ts"],"sourcesContent":[""],"mappings":""}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { BufferGeometry, ShaderMaterial, Vector3 } from '@anov/3d-core';
|
|
2
|
+
export interface TextureParamsType {
|
|
3
|
+
texture?: string;
|
|
4
|
+
repeatX?: number;
|
|
5
|
+
repeatY?: number;
|
|
6
|
+
wrapS?: number;
|
|
7
|
+
wrapT?: number;
|
|
8
|
+
}
|
|
9
|
+
declare type RoundLineGeometryOption = {
|
|
10
|
+
radius: number;
|
|
11
|
+
close: boolean;
|
|
12
|
+
pointNum?: number;
|
|
13
|
+
height?: number;
|
|
14
|
+
};
|
|
15
|
+
declare class RoundLineGeometry extends BufferGeometry {
|
|
16
|
+
constructor(points: Vector3[], option: RoundLineGeometryOption);
|
|
17
|
+
}
|
|
18
|
+
declare const createRoundLineWallMesh: (points: Vector3[], option: RoundLineGeometryOption, material?: ShaderMaterial) => any;
|
|
19
|
+
export { RoundLineGeometry, createRoundLineWallMesh, };
|
|
@@ -0,0 +1,212 @@
|
|
|
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 _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
3
|
+
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."); }
|
|
4
|
+
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); }
|
|
5
|
+
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; }
|
|
6
|
+
function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
|
|
7
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
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 _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
11
|
+
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); }
|
|
12
|
+
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
13
|
+
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }
|
|
14
|
+
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
|
|
15
|
+
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
|
|
16
|
+
function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); }
|
|
17
|
+
function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
|
|
18
|
+
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; } }
|
|
19
|
+
function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
|
|
20
|
+
/* eslint-disable no-void */
|
|
21
|
+
import { BoxGeometry, BufferGeometry, Color, CurvePath, ExtrudeGeometry, Group, LineCurve3, Mesh, MeshBasicMaterial, QuadraticBezierCurve3, Quaternion, ShaderMaterial, Shape, Vector3 } from '@anov/3d-core';
|
|
22
|
+
/**
|
|
23
|
+
* TODO: 参数优化
|
|
24
|
+
* create box geometry by two points
|
|
25
|
+
* just provide data not create mesh
|
|
26
|
+
* @param a
|
|
27
|
+
* @param b
|
|
28
|
+
* @param height
|
|
29
|
+
* @param depth
|
|
30
|
+
*/
|
|
31
|
+
var createBoxGeometryByPoints = function createBoxGeometryByPoints(a, b) {
|
|
32
|
+
var height = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 30;
|
|
33
|
+
var depth = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 10;
|
|
34
|
+
var material = arguments.length > 4 ? arguments[4] : undefined;
|
|
35
|
+
var width = a.distanceTo(b);
|
|
36
|
+
var box = new BoxGeometry(width, height, depth);
|
|
37
|
+
var currentMaterial = new MeshBasicMaterial({
|
|
38
|
+
color: new Color('#fff')
|
|
39
|
+
});
|
|
40
|
+
if (material) currentMaterial = material;
|
|
41
|
+
var mesh = new Mesh(box, currentMaterial);
|
|
42
|
+
var midpoint = new Vector3().addVectors(a, b).multiplyScalar(0.5);
|
|
43
|
+
mesh.position.x = midpoint.x;
|
|
44
|
+
mesh.position.y = midpoint.y + height / 2;
|
|
45
|
+
mesh.position.z = midpoint.z;
|
|
46
|
+
var direction = new Vector3();
|
|
47
|
+
direction.subVectors(a, b);
|
|
48
|
+
direction.normalize();
|
|
49
|
+
var axis = new Vector3(0, 1, 0); // axis
|
|
50
|
+
var angle = new Vector3(1, 0, 0).angleTo(direction);
|
|
51
|
+
var quaternion = new Quaternion().setFromAxisAngle(axis, angle);
|
|
52
|
+
var newDirection = new Vector3(1, 0, 0).applyQuaternion(quaternion);
|
|
53
|
+
if (!newDirection.angleTo(direction)) mesh.rotateOnAxis(axis, angle);else mesh.rotateOnAxis(axis, -angle);
|
|
54
|
+
return mesh;
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* rectangle shape
|
|
59
|
+
* @param w
|
|
60
|
+
* @param h
|
|
61
|
+
* @returns
|
|
62
|
+
*/
|
|
63
|
+
var rectangle = function rectangle() {
|
|
64
|
+
var w = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0.1;
|
|
65
|
+
var h = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 50;
|
|
66
|
+
var shape = new Shape();
|
|
67
|
+
shape.moveTo(0, 0);
|
|
68
|
+
shape.lineTo(0, w);
|
|
69
|
+
shape.lineTo(h, w);
|
|
70
|
+
shape.lineTo(h, 0);
|
|
71
|
+
shape.lineTo(0, 0);
|
|
72
|
+
return shape;
|
|
73
|
+
};
|
|
74
|
+
var defMaterial = new ShaderMaterial({
|
|
75
|
+
uniforms: {
|
|
76
|
+
u_color: {
|
|
77
|
+
value: new Color('#fab73f')
|
|
78
|
+
},
|
|
79
|
+
u_height: {
|
|
80
|
+
value: 100
|
|
81
|
+
},
|
|
82
|
+
u_opacity: {
|
|
83
|
+
value: 1.0
|
|
84
|
+
}
|
|
85
|
+
},
|
|
86
|
+
vertexShader: "\n uniform float u_height;\n uniform float u_speed;\n varying float v_opacity;\n\n void main() {\n v_opacity = mix(1.0, 0.0, position.y / u_height);\n\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n }",
|
|
87
|
+
fragmentShader: "\n uniform vec3 u_color;\n uniform float u_opacity;\n varying float v_opacity;\n\n void main() {\n gl_FragColor = vec4(u_color, 1.0);\n }\n ",
|
|
88
|
+
transparent: true,
|
|
89
|
+
side: 2,
|
|
90
|
+
depthTest: false
|
|
91
|
+
});
|
|
92
|
+
|
|
93
|
+
// const material = new MeshBasicMaterial({ color: new Color('#fab73f'), side: DoubleSide })
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* create round curve
|
|
97
|
+
* @param points
|
|
98
|
+
* @param radius
|
|
99
|
+
* @param close
|
|
100
|
+
* @returns
|
|
101
|
+
*/
|
|
102
|
+
var createCurve = function createCurve(points) {
|
|
103
|
+
var radius = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 20;
|
|
104
|
+
var height = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 50;
|
|
105
|
+
var close = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
|
|
106
|
+
var material = arguments.length > 4 ? arguments[4] : undefined;
|
|
107
|
+
if (!material) material = defMaterial;
|
|
108
|
+
var curve = new CurvePath();
|
|
109
|
+
var shape = rectangle(0.1, height);
|
|
110
|
+
if (points.length < 2) throw new Error('At least two points are required to create a curve');
|
|
111
|
+
if (points.length === 2) {
|
|
112
|
+
var line = new LineCurve3(points[0], points[1]);
|
|
113
|
+
curve.curves.push(line);
|
|
114
|
+
return curve;
|
|
115
|
+
}
|
|
116
|
+
var lines = [];
|
|
117
|
+
for (var i = 0; i < points.length - 1; i++) {
|
|
118
|
+
if (i === 0) {
|
|
119
|
+
var dir = points[0].clone().sub(points[1]).normalize();
|
|
120
|
+
var realEndPoints = points[1].clone().add(dir.multiplyScalar(radius));
|
|
121
|
+
var firstPoint = points[0];
|
|
122
|
+
if (close) firstPoint = points[0].clone().add(points[1].clone().sub(points[0]).normalize().multiplyScalar(radius));
|
|
123
|
+
lines.push(new LineCurve3(firstPoint, realEndPoints));
|
|
124
|
+
} else if (i === points.length - 1) {
|
|
125
|
+
//
|
|
126
|
+
} else {
|
|
127
|
+
var dir1 = points[i - 1].clone().sub(points[i]).normalize();
|
|
128
|
+
var dir2 = points[i + 1].clone().sub(points[i]).normalize();
|
|
129
|
+
var dir3 = points[i].clone().sub(points[i + 1]).normalize();
|
|
130
|
+
var nextDir1 = dir2.clone();
|
|
131
|
+
var nextDir2 = points[i].clone().sub(points[i + 1]).normalize();
|
|
132
|
+
var p1 = points[i].clone().add(dir1.multiplyScalar(radius));
|
|
133
|
+
var p2 = points[i].clone();
|
|
134
|
+
var p3 = points[i].clone().add(dir2.multiplyScalar(radius));
|
|
135
|
+
var beziercurve = new QuadraticBezierCurve3(p1, p2, p3);
|
|
136
|
+
var realLastPoints = points[i].clone().add(nextDir1.multiplyScalar(radius));
|
|
137
|
+
var _realEndPoints = points[i + 1].clone().add(nextDir2.multiplyScalar(radius));
|
|
138
|
+
lines.push(beziercurve);
|
|
139
|
+
lines.push(new LineCurve3(realLastPoints, i + 1 === points.length - 1 ? close ? points[i + 1].clone().add(dir3.multiplyScalar(radius)) : points[i + 1] : _realEndPoints));
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
if (close) {
|
|
143
|
+
// first point
|
|
144
|
+
var _dir = points[1].clone().sub(points[0]).normalize();
|
|
145
|
+
var _dir2 = points[points.length - 1].clone().sub(points[0]).normalize();
|
|
146
|
+
var _p = points[0].clone().add(_dir.multiplyScalar(radius));
|
|
147
|
+
var _p2 = points[0];
|
|
148
|
+
var _p3 = points[0].clone().add(_dir2.multiplyScalar(radius));
|
|
149
|
+
var _beziercurve = new QuadraticBezierCurve3(_p3, _p2, _p);
|
|
150
|
+
|
|
151
|
+
// last point
|
|
152
|
+
var _dir3 = points[0].clone().sub(points[points.length - 1]).normalize();
|
|
153
|
+
var dir4 = points[points.length - 2].clone().sub(points[points.length - 1]).normalize();
|
|
154
|
+
var p4 = points[points.length - 1].clone().add(_dir3.multiplyScalar(radius));
|
|
155
|
+
var p5 = points[points.length - 1];
|
|
156
|
+
var p6 = points[points.length - 1].clone().add(dir4.multiplyScalar(radius));
|
|
157
|
+
var beziercurve2 = new QuadraticBezierCurve3(p6, p5, p4);
|
|
158
|
+
|
|
159
|
+
// last line
|
|
160
|
+
var laseLine = new LineCurve3(p4, _p3);
|
|
161
|
+
lines.push(beziercurve2);
|
|
162
|
+
lines.push(laseLine);
|
|
163
|
+
lines.push(_beziercurve);
|
|
164
|
+
}
|
|
165
|
+
var group = new Group();
|
|
166
|
+
lines.forEach(function (line) {
|
|
167
|
+
curve.curves.push(line);
|
|
168
|
+
if (line.type === 'QuadraticBezierCurve3') {
|
|
169
|
+
var extrudeSettings = {
|
|
170
|
+
steps: 100,
|
|
171
|
+
bevelEnabled: false,
|
|
172
|
+
extrudePath: line
|
|
173
|
+
};
|
|
174
|
+
var geometry = new ExtrudeGeometry(shape, extrudeSettings);
|
|
175
|
+
var arcWall = new Mesh(geometry, material);
|
|
176
|
+
arcWall.translateY(arcWall.position.y + height);
|
|
177
|
+
if (radius) group.add(arcWall);
|
|
178
|
+
} else {
|
|
179
|
+
var mesh = createBoxGeometryByPoints(line.v1, line.v2, height, 0.1, material);
|
|
180
|
+
group.add(mesh);
|
|
181
|
+
}
|
|
182
|
+
});
|
|
183
|
+
return [curve, group];
|
|
184
|
+
};
|
|
185
|
+
var RoundLineGeometry = /*#__PURE__*/function (_BufferGeometry) {
|
|
186
|
+
_inherits(RoundLineGeometry, _BufferGeometry);
|
|
187
|
+
var _super = _createSuper(RoundLineGeometry);
|
|
188
|
+
function RoundLineGeometry(points, option) {
|
|
189
|
+
var _option$radius;
|
|
190
|
+
var _this;
|
|
191
|
+
_classCallCheck(this, RoundLineGeometry);
|
|
192
|
+
_this = _super.call(this);
|
|
193
|
+
var _createCurve = createCurve(points, (_option$radius = option.radius) !== null && _option$radius !== void 0 ? _option$radius : 20, void 0, option.close || false),
|
|
194
|
+
_createCurve2 = _slicedToArray(_createCurve, 1),
|
|
195
|
+
curve = _createCurve2[0];
|
|
196
|
+
var currentPoints = curve.getPoints(option.pointNum || 1000);
|
|
197
|
+
var geometry = new BufferGeometry();
|
|
198
|
+
geometry.setFromPoints(currentPoints);
|
|
199
|
+
return _possibleConstructorReturn(_this, geometry);
|
|
200
|
+
}
|
|
201
|
+
return _createClass(RoundLineGeometry);
|
|
202
|
+
}(BufferGeometry);
|
|
203
|
+
var createRoundLineWallMesh = function createRoundLineWallMesh(points, option, material) {
|
|
204
|
+
var _option$radius2, _option$height;
|
|
205
|
+
var _createCurve3 = createCurve(points, (_option$radius2 = option.radius) !== null && _option$radius2 !== void 0 ? _option$radius2 : 20, (_option$height = option.height) !== null && _option$height !== void 0 ? _option$height : 50, option.close || false, material),
|
|
206
|
+
_createCurve4 = _slicedToArray(_createCurve3, 2),
|
|
207
|
+
_ = _createCurve4[0],
|
|
208
|
+
group = _createCurve4[1];
|
|
209
|
+
return group;
|
|
210
|
+
};
|
|
211
|
+
export { RoundLineGeometry, createRoundLineWallMesh };
|
|
212
|
+
//# sourceMappingURL=round-curve.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["BoxGeometry","BufferGeometry","Color","CurvePath","ExtrudeGeometry","Group","LineCurve3","Mesh","MeshBasicMaterial","QuadraticBezierCurve3","Quaternion","ShaderMaterial","Shape","Vector3","createBoxGeometryByPoints","a","b","height","depth","material","width","distanceTo","box","currentMaterial","color","mesh","midpoint","addVectors","multiplyScalar","position","x","y","z","direction","subVectors","normalize","axis","angle","angleTo","quaternion","setFromAxisAngle","newDirection","applyQuaternion","rotateOnAxis","rectangle","w","h","shape","moveTo","lineTo","defMaterial","uniforms","u_color","value","u_height","u_opacity","vertexShader","fragmentShader","transparent","side","depthTest","createCurve","points","radius","close","curve","length","Error","line","curves","push","lines","i","dir","clone","sub","realEndPoints","add","firstPoint","dir1","dir2","dir3","nextDir1","nextDir2","p1","p2","p3","beziercurve","realLastPoints","dir4","p4","p5","p6","beziercurve2","laseLine","group","forEach","type","extrudeSettings","steps","bevelEnabled","extrudePath","geometry","arcWall","translateY","v1","v2","RoundLineGeometry","option","currentPoints","getPoints","pointNum","setFromPoints","createRoundLineWallMesh","_"],"sources":["../../src/line/round-curve.ts"],"sourcesContent":["/* eslint-disable no-void */\nimport { BoxGeometry, BufferGeometry, Color, CurvePath, ExtrudeGeometry, Group, LineCurve3, Mesh, MeshBasicMaterial, QuadraticBezierCurve3, Quaternion, ShaderMaterial, Shape, Vector3 } from '@anov/3d-core'\n\nexport interface TextureParamsType {\n texture?: string\n repeatX?: number\n repeatY?: number\n wrapS?: number\n wrapT?: number\n}\n\n/**\n * TODO: 参数优化\n * create box geometry by two points\n * just provide data not create mesh\n * @param a\n * @param b\n * @param height\n * @param depth\n */\nconst createBoxGeometryByPoints = (a: Vector3, b: Vector3, height = 30, depth = 10, material?: ShaderMaterial) => {\n const width = a.distanceTo(b)\n const box = new BoxGeometry(width, height, depth)\n\n let currentMaterial: MeshBasicMaterial | ShaderMaterial = new MeshBasicMaterial({ color: new Color('#fff') })\n if (material)\n currentMaterial = material\n\n const mesh = new Mesh(box, currentMaterial)\n const midpoint = new Vector3().addVectors(a, b).multiplyScalar(0.5)\n\n mesh.position.x = midpoint.x\n mesh.position.y = midpoint.y + height / 2\n mesh.position.z = midpoint.z\n\n const direction = new Vector3()\n direction.subVectors(a, b)\n direction.normalize()\n\n const axis = new Vector3(0, 1, 0) // axis\n const angle = new Vector3(1, 0, 0).angleTo(direction)\n\n const quaternion = new Quaternion().setFromAxisAngle(axis, angle)\n const newDirection = new Vector3(1, 0, 0).applyQuaternion(quaternion)\n\n if (!newDirection.angleTo(direction))\n mesh.rotateOnAxis(axis, angle)\n else\n mesh.rotateOnAxis(axis, -angle)\n\n return mesh\n}\n\n/**\n * rectangle shape\n * @param w\n * @param h\n * @returns\n */\nconst rectangle = (w = 0.1, h = 50) => {\n const shape = new Shape()\n\n shape.moveTo(0, 0)\n shape.lineTo(0, w)\n shape.lineTo(h, w)\n shape.lineTo(h, 0)\n shape.lineTo(0, 0)\n\n return shape\n}\n\nconst defMaterial = new ShaderMaterial({\n uniforms: {\n u_color: { value: new Color('#fab73f') },\n u_height: { value: 100 },\n u_opacity: { value: 1.0 },\n },\n\n vertexShader: `\n uniform float u_height;\n uniform float u_speed;\n varying float v_opacity;\n\n void main() {\n v_opacity = mix(1.0, 0.0, position.y / u_height);\n\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n }`,\n fragmentShader: `\n uniform vec3 u_color;\n uniform float u_opacity;\n varying float v_opacity;\n\n void main() {\n gl_FragColor = vec4(u_color, 1.0);\n }\n `,\n transparent: true,\n side: 2,\n depthTest: false,\n})\n\n// const material = new MeshBasicMaterial({ color: new Color('#fab73f'), side: DoubleSide })\n\n/**\n * create round curve\n * @param points\n * @param radius\n * @param close\n * @returns\n */\nconst createCurve = (points: Vector3[], radius = 20, height = 50, close = false, material?: ShaderMaterial) => {\n if (!material)\n material = defMaterial\n\n const curve = new CurvePath()\n const shape = rectangle(0.1, height)\n\n if (points.length < 2)\n throw new Error('At least two points are required to create a curve')\n\n if (points.length === 2) {\n const line = new LineCurve3(points[0], points[1])\n curve.curves.push(line)\n\n return curve\n }\n\n const lines = []\n\n for (let i = 0; i < points.length - 1; i++) {\n if (i === 0) {\n const dir = points[0].clone().sub(points[1]).normalize()\n const realEndPoints = points[1].clone().add(dir.multiplyScalar(radius))\n\n let firstPoint = points[0]\n\n if (close)\n firstPoint = points[0].clone().add(points[1].clone().sub(points[0]).normalize().multiplyScalar(radius))\n\n lines.push(new LineCurve3(firstPoint, realEndPoints))\n }\n else if (i === points.length - 1) {\n //\n }\n else {\n const dir1 = points[i - 1].clone().sub(points[i]).normalize()\n const dir2 = points[i + 1].clone().sub(points[i]).normalize()\n const dir3 = points[i].clone().sub(points[i + 1]).normalize()\n\n const nextDir1 = dir2.clone()\n const nextDir2 = points[i].clone().sub(points[i + 1]).normalize()\n\n const p1 = points[i].clone().add(dir1.multiplyScalar(radius))\n const p2 = points[i].clone()\n const p3 = points[i].clone().add(dir2.multiplyScalar(radius))\n\n const beziercurve = new QuadraticBezierCurve3(p1, p2, p3)\n\n const realLastPoints = points[i].clone().add(nextDir1.multiplyScalar(radius))\n const realEndPoints = points[i + 1].clone().add(nextDir2.multiplyScalar(radius))\n\n lines.push(beziercurve)\n lines.push(new LineCurve3(realLastPoints, i + 1 === points.length - 1\n ? close\n ? points[i + 1].clone().add(dir3.multiplyScalar(radius))\n : points[i + 1]\n : realEndPoints))\n }\n }\n\n if (close) {\n // first point\n const dir1 = points[1].clone().sub(points[0]).normalize()\n const dir2 = points[points.length - 1].clone().sub(points[0]).normalize()\n\n const p1 = points[0].clone().add(dir1.multiplyScalar(radius))\n const p2 = points[0]\n const p3 = points[0].clone().add(dir2.multiplyScalar(radius))\n\n const beziercurve = new QuadraticBezierCurve3(p3, p2, p1)\n\n // last point\n const dir3 = points[0].clone().sub(points[points.length - 1]).normalize()\n const dir4 = points[points.length - 2].clone().sub(points[points.length - 1]).normalize()\n\n const p4 = points[points.length - 1].clone().add(dir3.multiplyScalar(radius))\n const p5 = points[points.length - 1]\n const p6 = points[points.length - 1].clone().add(dir4.multiplyScalar(radius))\n\n const beziercurve2 = new QuadraticBezierCurve3(p6, p5, p4)\n\n // last line\n const laseLine = new LineCurve3(p4, p3)\n\n lines.push(beziercurve2)\n lines.push(laseLine)\n lines.push(beziercurve)\n }\n\n const group = new Group()\n\n lines.forEach((line) => {\n curve.curves.push(line)\n\n if (line.type === 'QuadraticBezierCurve3') {\n const extrudeSettings = {\n steps: 100,\n bevelEnabled: false,\n extrudePath: line,\n }\n\n const geometry = new ExtrudeGeometry(shape, extrudeSettings)\n const arcWall = new Mesh(geometry, material)\n\n arcWall.translateY(arcWall.position.y + height)\n\n if (radius)\n group.add(arcWall)\n }\n else {\n const mesh = createBoxGeometryByPoints(line.v1, line.v2, height, 0.1, material)\n group.add(mesh)\n }\n })\n\n return [curve, group] as any\n}\n\ntype RoundLineGeometryOption = {\n radius: number\n close: boolean\n pointNum?: number\n height?: number\n}\n\nclass RoundLineGeometry extends BufferGeometry {\n constructor(points: Vector3[], option: RoundLineGeometryOption) {\n super()\n\n const [curve] = createCurve(points, option.radius ?? 20, void 0, option.close || false)\n const currentPoints = curve.getPoints(option.pointNum || 1000)\n\n const geometry = new BufferGeometry()\n geometry.setFromPoints(currentPoints)\n\n return geometry\n }\n}\n\nconst createRoundLineWallMesh = (points: Vector3[], option: RoundLineGeometryOption, material?: ShaderMaterial) => {\n const [_, group] = createCurve(points, option.radius ?? 20, option.height ?? 50, option.close || false, material)\n\n return group\n}\n\nexport {\n RoundLineGeometry,\n createRoundLineWallMesh,\n}"],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Color, MeshStandardMaterial } from '@anov/3d-core';
|
|
2
|
+
declare type FinirMaterialOption = {
|
|
3
|
+
rimColor?: Color;
|
|
4
|
+
rimPower?: number;
|
|
5
|
+
};
|
|
6
|
+
declare class FinirMaterial extends MeshStandardMaterial {
|
|
7
|
+
constructor(options?: FinirMaterialOption);
|
|
8
|
+
}
|
|
9
|
+
export default FinirMaterial;
|
|
@@ -0,0 +1,47 @@
|
|
|
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 _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); } }
|
|
3
|
+
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
|
|
4
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
5
|
+
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); }
|
|
6
|
+
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
7
|
+
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }
|
|
8
|
+
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
|
|
9
|
+
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
|
|
10
|
+
function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); }
|
|
11
|
+
function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
|
|
12
|
+
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; } }
|
|
13
|
+
function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
|
|
14
|
+
import { Color, MeshStandardMaterial } from '@anov/3d-core';
|
|
15
|
+
var FinirMaterial = /*#__PURE__*/function (_MeshStandardMaterial) {
|
|
16
|
+
_inherits(FinirMaterial, _MeshStandardMaterial);
|
|
17
|
+
var _super = _createSuper(FinirMaterial);
|
|
18
|
+
function FinirMaterial(options) {
|
|
19
|
+
var _this;
|
|
20
|
+
_classCallCheck(this, FinirMaterial);
|
|
21
|
+
_this = _super.call(this);
|
|
22
|
+
var finirMaterial = new MeshStandardMaterial({
|
|
23
|
+
opacity: 0.0,
|
|
24
|
+
transparent: true,
|
|
25
|
+
depthWrite: false
|
|
26
|
+
});
|
|
27
|
+
var _ref = options || {},
|
|
28
|
+
_ref$rimColor = _ref.rimColor,
|
|
29
|
+
rimColor = _ref$rimColor === void 0 ? new Color(0x00FFFF) : _ref$rimColor,
|
|
30
|
+
_ref$rimPower = _ref.rimPower,
|
|
31
|
+
rimPower = _ref$rimPower === void 0 ? 0.9 : _ref$rimPower;
|
|
32
|
+
finirMaterial.onBeforeCompile = function (shader) {
|
|
33
|
+
shader.uniforms.rimColor = {
|
|
34
|
+
value: rimColor
|
|
35
|
+
};
|
|
36
|
+
shader.uniforms.rimPower = {
|
|
37
|
+
value: rimPower
|
|
38
|
+
};
|
|
39
|
+
shader.fragmentShader = shader.fragmentShader.replace('void main() {', ['uniform vec3 rimColor;', 'uniform float rimPower;', 'void main() {'].join('\n'));
|
|
40
|
+
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.;");
|
|
41
|
+
};
|
|
42
|
+
return _possibleConstructorReturn(_this, finirMaterial);
|
|
43
|
+
}
|
|
44
|
+
return _createClass(FinirMaterial);
|
|
45
|
+
}(MeshStandardMaterial);
|
|
46
|
+
export default FinirMaterial;
|
|
47
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Color","MeshStandardMaterial","FinirMaterial","options","finirMaterial","opacity","transparent","depthWrite","rimColor","rimPower","onBeforeCompile","shader","uniforms","value","fragmentShader","replace","join"],"sources":["../../../src/material/finirMaterialMaterial/index.ts"],"sourcesContent":["import { Color, MeshStandardMaterial } from '@anov/3d-core'\n\ntype FinirMaterialOption = {\n rimColor?: Color\n rimPower?: number\n}\n\nclass FinirMaterial extends MeshStandardMaterial {\n constructor(options?: FinirMaterialOption) {\n super()\n\n const finirMaterial = new MeshStandardMaterial({\n opacity: 0.0,\n transparent: true,\n depthWrite: false,\n })\n\n const { rimColor = new Color(0x00FFFF), rimPower = 0.9 } = options || {}\n\n finirMaterial.onBeforeCompile = (shader) => {\n shader.uniforms.rimColor = { value: rimColor }\n shader.uniforms.rimPower = { value: rimPower }\n shader.fragmentShader = shader.fragmentShader.replace(\n 'void main() {',\n [\n 'uniform vec3 rimColor;',\n 'uniform float rimPower;',\n 'void main() {',\n ].join('\\n'),\n )\n shader.fragmentShader = shader.fragmentShader.replace(\n '#include <dithering_fragment>',\n `#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.;`,\n )\n }\n\n return finirMaterial\n }\n}\n\nexport default FinirMaterial"],"mappings":";;;;;;;;;;;;;AAAA,SAASA,KAAK,EAAEC,oBAAoB,QAAQ,eAAe;AAAA,IAOrDC,aAAa;EAAA;EAAA;EACjB,uBAAYC,OAA6B,EAAE;IAAA;IAAA;IACzC;IAEA,IAAMC,aAAa,GAAG,IAAIH,oBAAoB,CAAC;MAC7CI,OAAO,EAAE,GAAG;MACZC,WAAW,EAAE,IAAI;MACjBC,UAAU,EAAE;IACd,CAAC,CAAC;IAEF,WAA2DJ,OAAO,IAAI,CAAC,CAAC;MAAA,qBAAhEK,QAAQ;MAARA,QAAQ,8BAAG,IAAIR,KAAK,CAAC,QAAQ,CAAC;MAAA,qBAAES,QAAQ;MAARA,QAAQ,8BAAG,GAAG;IAEtDL,aAAa,CAACM,eAAe,GAAG,UAACC,MAAM,EAAK;MAC1CA,MAAM,CAACC,QAAQ,CAACJ,QAAQ,GAAG;QAAEK,KAAK,EAAEL;MAAS,CAAC;MAC9CG,MAAM,CAACC,QAAQ,CAACH,QAAQ,GAAG;QAAEI,KAAK,EAAEJ;MAAS,CAAC;MAC9CE,MAAM,CAACG,cAAc,GAAGH,MAAM,CAACG,cAAc,CAACC,OAAO,CACnD,eAAe,EACf,CACE,wBAAwB,EACxB,yBAAyB,EACzB,eAAe,CAChB,CAACC,IAAI,CAAC,IAAI,CAAC,CACb;MACDL,MAAM,CAACG,cAAc,GAAGH,MAAM,CAACG,cAAc,CAACC,OAAO,CACnD,+BAA+B,0RAMhC;IACH,CAAC;IAED,yCAAOX,aAAa;EACtB;EAAC;AAAA,EAlCyBH,oBAAoB;AAqChD,eAAeC,aAAa"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import * as THREE from '@anov/3d-core';
|
|
2
|
+
declare type GridMaterialParameters = {
|
|
3
|
+
name?: string;
|
|
4
|
+
side?: THREE.Side;
|
|
5
|
+
transparent?: boolean;
|
|
6
|
+
theme?: THREE.Color;
|
|
7
|
+
majorLineWidth?: number;
|
|
8
|
+
minorLineWidth?: number;
|
|
9
|
+
axisLineWidth?: number;
|
|
10
|
+
majorGridDiv?: number;
|
|
11
|
+
gridDiv?: number;
|
|
12
|
+
majorLineColor?: THREE.Color;
|
|
13
|
+
minorLineColor?: THREE.Color;
|
|
14
|
+
xAxisColor?: THREE.Color;
|
|
15
|
+
zAxisColor?: THREE.Color;
|
|
16
|
+
};
|
|
17
|
+
declare class GridMaterial extends THREE.Material {
|
|
18
|
+
constructor(options?: GridMaterialParameters);
|
|
19
|
+
}
|
|
20
|
+
export default GridMaterial;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
declare const _default: "\nprecision highp float;\n\n// Varyings from the vertex shader\nin vec2 v_uv;\nin vec2 v_worldPos;\n\n// Uniforms\nuniform float u_majorLineWidth, u_minorLineWidth, u_axisLineWidth;\nuniform vec3 u_majorLineColor, u_minorLineColor, u_baseColor;\nuniform vec3 u_xAxisColor, u_zAxisColor;\nuniform float u_majorGridDiv, u_baseAlpha;\nuniform vec2 u_resolution;\n\n// Output color\nout vec4 gColor;\n\nfloat saturate(float value) {\nreturn clamp(value, 0.0, 1.0);\n}\n\nvoid main() {\n // Calculate derivatives for anti-aliasing\nvec4 uvDDXY = vec4(dFdx(v_uv), dFdy(v_uv));\nvec2 uvDeriv = vec2(length(uvDDXY.xz), length(uvDDXY.yw));\n\nvec4 worldPosDDXY = vec4(dFdx(v_worldPos), dFdy(v_worldPos));\nvec2 worldPosDeriv = vec2(length(worldPosDDXY.xz), length(worldPosDDXY.yw));\n\n // Axis lines calculation\nfloat axisLineWidth = max(u_majorLineWidth, u_axisLineWidth);\n\nvec2 axisDrawWidth = vec2(axisLineWidth) + worldPosDeriv * 0.5; // Adjust for AA\nvec2 axisLineAA = worldPosDeriv * 1.5;\nvec2 axisLines2 = smoothstep(axisDrawWidth + axisLineAA, axisDrawWidth - axisLineAA, abs(v_worldPos.xy * 2.0));\naxisLines2 *= (axisLineWidth / axisDrawWidth);\n\n // Major grid lines\nfloat div = max(2.0, round(u_majorGridDiv));\nvec2 majorUVDeriv = worldPosDeriv / div;\nfloat majorLineWidth = u_majorLineWidth / div;\nvec2 majorDrawWidth = clamp(vec2(majorLineWidth), majorUVDeriv, vec2(0.5));\nvec2 majorLineAA = majorUVDeriv * 1.5;\nvec2 majorGridUV = 1.0 - abs(fract(v_worldPos.xy / div) * 2.0 - 1.0);\nvec2 majorGrid2 = smoothstep(majorDrawWidth + majorLineAA, majorDrawWidth - majorLineAA, majorGridUV);\nmajorGrid2 *= (majorLineWidth / majorDrawWidth);\n\n // Minor grid lines\nfloat minorLineWidth = u_minorLineWidth;\nbool minorInvertLine = minorLineWidth > 0.5;\nfloat minorTargetWidth = minorInvertLine ? 1.0 - minorLineWidth : minorLineWidth;\nvec2 minorDrawWidth = clamp(vec2(minorTargetWidth), uvDeriv, vec2(0.5));\nvec2 minorLineAA = uvDeriv * 1.5;\nvec2 minorGridUV = abs(fract(v_uv) * 2.0 - 1.0);\nminorGridUV = minorInvertLine ? minorGridUV : 1.0 - minorGridUV;\nvec2 minorGrid2 = smoothstep(minorDrawWidth + minorLineAA, minorDrawWidth - minorLineAA, minorGridUV);\nminorGrid2 *= (minorTargetWidth / minorDrawWidth);\n\nif(max(axisLines2.x, axisLines2.y) > 0.) {\n // If we're drawing axis lines, don't draw grid lines on axis\nmajorGrid2 = vec2(0.);\nminorGrid2 = vec2(0.);\n}\n\n // Combine minor and major grid lines\nfloat minorGrid = mix(minorGrid2.x, 1.0, minorGrid2.y);\nfloat majorGrid = mix(majorGrid2.x, 1.0, majorGrid2.y);\n\n // Final color calculations for grid\nvec3 gridColor = mix(u_baseColor, u_minorLineColor, minorGrid);\ngridColor = mix(gridColor, u_majorLineColor, majorGrid);\nfloat gridAlpha = u_baseAlpha;\n\n // Apply base alpha to the grid lines\nif(minorGrid > 0.0) {\ngridAlpha = saturate(mix(gridAlpha, 1.0, minorGrid));\n}\nif(majorGrid > 0.0) {\ngridAlpha = saturate(mix(gridAlpha, 1.0, majorGrid));\n}\n\n // Apply axis color to the axis lines\nvec3 axisColor = mix(vec3(1.), u_xAxisColor, step(0.5, abs(v_worldPos.x)));\naxisColor = mix(axisColor, u_zAxisColor, step(0.5, abs(v_worldPos.y)));\n\nvec3 finalColor = mix(gridColor, axisColor, max(axisLines2.x, axisLines2.y));\n\nif(max(axisLines2.x, axisLines2.y) > 0.) {\ngridAlpha = saturate(mix(gridAlpha, 1.0, max(axisLines2.x, axisLines2.y)));\n}\n\n // Set the final fragment color\ngColor = vec4(finalColor, gridAlpha);\n}\n";
|
|
2
|
+
export default _default;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
declare const _default: "\n\nprecision highp float;\n\n// Uniforms\nuniform float u_majorGridDiv;\nuniform float u_gridDiv;\n\nout vec2 v_uv; // Passed to the fragment shader\nout vec2 v_worldPos;\nvoid main() {\n vec4 transformed = vec4(position, 1.0);\n gl_Position = projectionMatrix * viewMatrix * modelMatrix * transformed;\n\n vec3 worldPosition = (modelMatrix * transformed).xyz;\n\n v_worldPos = worldPosition.xz * u_gridDiv;\n\n // Use local position for grid calculations\n vec3 localPos = transformed.xyz;\n vec3 cameraCenteringOffset = floor(cameraPosition);\n vec3 cameraSnappedWorldPos = worldPosition.xyz - cameraCenteringOffset;\n v_uv = cameraSnappedWorldPos.xz * u_gridDiv;\n\n}\n";
|
|
2
|
+
export default _default;
|
|
@@ -0,0 +1,24 @@
|
|
|
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 _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
6
|
+
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); }
|
|
7
|
+
var Base = /*#__PURE__*/function () {
|
|
8
|
+
function Base() {
|
|
9
|
+
_classCallCheck(this, Base);
|
|
10
|
+
}
|
|
11
|
+
_createClass(Base, [{
|
|
12
|
+
key: "remove",
|
|
13
|
+
value: function remove() {}
|
|
14
|
+
}, {
|
|
15
|
+
key: "clone",
|
|
16
|
+
value: function clone() {}
|
|
17
|
+
}, {
|
|
18
|
+
key: "copy",
|
|
19
|
+
value: function copy() {}
|
|
20
|
+
}]);
|
|
21
|
+
return Base;
|
|
22
|
+
}();
|
|
23
|
+
export default Base;
|
|
24
|
+
//# sourceMappingURL=Base.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Base"],"sources":["../../../src/poi/core/Base.ts"],"sourcesContent":["class Base {\n constructor() {\n\n }\n\n remove() {\n\n }\n\n clone() {\n }\n\n copy() {\n }\n}\n\nexport default Base"],"mappings":";;;;;;IAAMA,IAAI;EACR,gBAAc;IAAA;EAEd;EAAC;IAAA;IAAA,OAED,kBAAS,CAET;EAAC;IAAA;IAAA,OAED,iBAAQ,CACR;EAAC;IAAA;IAAA,OAED,gBAAO,CACP;EAAC;EAAA;AAAA;AAGH,eAAeA,IAAI"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Object3D, Vector2 } from '@anov/3d-core';
|
|
2
|
+
import { EPoiType } from '../utils/type';
|
|
3
|
+
import type { IOption } from '../utils/type';
|
|
4
|
+
declare class Css2D extends Object3D {
|
|
5
|
+
element: HTMLElement;
|
|
6
|
+
contentDom: HTMLElement;
|
|
7
|
+
isCSS2DObject: boolean;
|
|
8
|
+
center: Vector2;
|
|
9
|
+
poiType: EPoiType;
|
|
10
|
+
data: any;
|
|
11
|
+
option: IOption;
|
|
12
|
+
constructor(type: EPoiType, data: any, option: IOption);
|
|
13
|
+
private createElement;
|
|
14
|
+
setAttribute(): void;
|
|
15
|
+
private titlePanel;
|
|
16
|
+
private contentPanel;
|
|
17
|
+
private assignStyle;
|
|
18
|
+
private print;
|
|
19
|
+
}
|
|
20
|
+
export default Css2D;
|