@hatiolab/things-scene 10.0.0-beta.93 → 10.0.0-beta.94

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 (29) hide show
  1. package/dist-types/components/component-geometry.d.ts.map +1 -1
  2. package/dist-types/components/mutater/path.d.ts.map +1 -1
  3. package/dist-types/components/outline/path-outline.d.ts.map +1 -1
  4. package/dist-types/components/polygon.d.ts +2 -0
  5. package/dist-types/components/polygon.d.ts.map +1 -1
  6. package/dist-types/components/polyline.d.ts.map +1 -1
  7. package/dist-types/components/shape.d.ts.map +1 -1
  8. package/dist-types/layer/modeler/path-handler.d.ts.map +1 -1
  9. package/dist-types/things-scene/index.d.ts +2 -0
  10. package/dist-types/things-scene/index.d.ts.map +1 -1
  11. package/dist-types/threed/factories/polygon.d.ts +19 -0
  12. package/dist-types/threed/factories/polygon.d.ts.map +1 -1
  13. package/dist-types/threed/managers/vertex-gizmo-manager.d.ts +50 -4
  14. package/dist-types/threed/managers/vertex-gizmo-manager.d.ts.map +1 -1
  15. package/dist-types/threed/real-object-extrude.d.ts +10 -1
  16. package/dist-types/threed/real-object-extrude.d.ts.map +1 -1
  17. package/dist-types/threed/texture/fillstyle-texture.d.ts.map +1 -1
  18. package/dist-types/transfer/index.d.ts +2 -0
  19. package/dist-types/transfer/index.d.ts.map +1 -1
  20. package/dist-types/types/polygon-path-arc.d.ts +72 -0
  21. package/dist-types/types/polygon-path-arc.d.ts.map +1 -0
  22. package/dist-types/types/polygon-path.d.ts +153 -0
  23. package/dist-types/types/polygon-path.d.ts.map +1 -0
  24. package/package.json +1 -1
  25. package/things-scene-min.js +11 -11
  26. package/things-scene-min.js.map +1 -1
  27. package/things-scene-transfer.mjs +2 -2
  28. package/things-scene.mjs +3 -3
  29. package/things-scene.mjs.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"component-geometry.d.ts","sourceRoot":"","sources":["../../src/components/component-geometry.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,MAAM,EAAoB,MAAM,wBAAwB,CAAA;AAItE,wBAAgB,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,WAEvD;AAED,wBAAgB,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,QAYrF;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,MAAM,QAqB/C;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,QAa7C;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO;;;;;EAiC/F;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,UAOxE;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,OAElD;AAID,wBAAgB,UAAU,CAAC,IAAI,EAAE,GAAG;;;;;EAyBnC;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,QAsBhD;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,GAAG;;;EAOnC;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,QAiB/C;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,GAAG;;;;EAKrC;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,QAOpD;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,GAAG;;;;EAInC;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,QAOhD;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,GAAG;;;;EAKtC;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,QAKtD;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,GAAG,WAGjC;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,QAE5C;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,GAAG,OAErC;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,GAAG,OAExC;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,GAAG,OAEpC;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,GAAG,OAEtC;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,GAAG,OAEtC"}
1
+ {"version":3,"file":"component-geometry.d.ts","sourceRoot":"","sources":["../../src/components/component-geometry.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,MAAM,EAAoB,MAAM,wBAAwB,CAAA;AAItE,wBAAgB,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,WAEvD;AAED,wBAAgB,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,QAcrF;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,MAAM,QAsB/C;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,QAa7C;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO;;;;;EAiC/F;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,UAOxE;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,OAElD;AAID,wBAAgB,UAAU,CAAC,IAAI,EAAE,GAAG;;;;;EAyBnC;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,QAuBhD;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,GAAG;;;EAOnC;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,QAiB/C;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,GAAG;;;;EAKrC;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,QAOpD;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,GAAG;;;;EAInC;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,QAOhD;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,GAAG;;;;EAKtC;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,QAKtD;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,GAAG,WAGjC;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,QAE5C;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,GAAG,OAErC;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,GAAG,OAExC;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,GAAG,OAEpC;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,GAAG,OAEtC;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,GAAG,OAEtC"}
@@ -1 +1 @@
1
- {"version":3,"file":"path.d.ts","sourceRoot":"","sources":["../../../src/components/mutater/path.ts"],"names":[],"mappings":"AAgBA,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,QA0D5F"}
1
+ {"version":3,"file":"path.d.ts","sourceRoot":"","sources":["../../../src/components/mutater/path.ts"],"names":[],"mappings":"AAgBA,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,QAyD5F"}
@@ -1 +1 @@
1
- {"version":3,"file":"path-outline.d.ts","sourceRoot":"","sources":["../../../src/components/outline/path-outline.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,SAAS,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,OAoDnE"}
1
+ {"version":3,"file":"path-outline.d.ts","sourceRoot":"","sources":["../../../src/components/outline/path-outline.ts"],"names":[],"mappings":"AAmDA,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,SAAS,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,OA4CnE"}
@@ -3,6 +3,8 @@ export default class Polygon extends Shape {
3
3
  is3dish(): boolean;
4
4
  get mutable(): boolean;
5
5
  get pathExtendable(): boolean;
6
+ /** PathHandler 가 corner radius 핸들 ◯ 을 그릴지 여부 (Phase L.1c-2) */
7
+ get cornerEditable(): boolean;
6
8
  get path(): any;
7
9
  set path(path: any);
8
10
  contains(x: any, y: any): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"polygon.d.ts","sourceRoot":"","sources":["../../src/components/polygon.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,MAAM,YAAY,CAAA;AAqC9B,MAAM,CAAC,OAAO,OAAO,OAAQ,SAAQ,KAAK;IACxC,OAAO;IAIP,IAAI,OAAO,YAEV;IAED,IAAI,cAAc,YAEjB;IAED,IAAI,IAAI,QAEP;IAED,IAAI,IAAI,CAAC,IAAI,KAAA,EAEZ;IAED,QAAQ,CAAC,CAAC,KAAA,EAAE,CAAC,KAAA;IAkBb,IAAI,QAAQ,QAaX;IAED,IAAI,MAAM;;;;;;;;;;;;;;;MAET;CACF"}
1
+ {"version":3,"file":"polygon.d.ts","sourceRoot":"","sources":["../../src/components/polygon.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,MAAM,YAAY,CAAA;AAuC9B,MAAM,CAAC,OAAO,OAAO,OAAQ,SAAQ,KAAK;IACxC,OAAO;IAIP,IAAI,OAAO,YAEV;IAED,IAAI,cAAc,YAEjB;IAED,+DAA+D;IAC/D,IAAI,cAAc,YAEjB;IAED,IAAI,IAAI,QAEP;IAED,IAAI,IAAI,CAAC,IAAI,KAAA,EAEZ;IAED,QAAQ,CAAC,CAAC,KAAA,EAAE,CAAC,KAAA;IAkBb,IAAI,QAAQ,QAaX;IAED,IAAI,MAAM;;;;;;;;;;;;;;;MAET;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"polyline.d.ts","sourceRoot":"","sources":["../../src/components/polyline.ts"],"names":[],"mappings":"AAKA,OAAO,IAAI,MAAM,WAAW,CAAA;AAqC5B,MAAM,CAAC,OAAO,OAAO,QAAS,SAAQ,IAAI;IACxC,QAAQ,EAAE,GAAG,CAAA;IACb,MAAM,EAAE,GAAG,CAAA;IAEX,IAAI,cAAc,YAEjB;IAED,IAAI,IAAI,UASP;IAED,IAAI,IAAI,CAAC,IAAI,OAAA,EAiBZ;IAED,IAAI,QAAQ,IAAI,GAAG,CAgClB;IAED,IAAI,MAAM;;;;;;;;;;;;;;;MAET;CACF"}
1
+ {"version":3,"file":"polyline.d.ts","sourceRoot":"","sources":["../../src/components/polyline.ts"],"names":[],"mappings":"AAKA,OAAO,IAAI,MAAM,WAAW,CAAA;AAuC5B,MAAM,CAAC,OAAO,OAAO,QAAS,SAAQ,IAAI;IACxC,QAAQ,EAAE,GAAG,CAAA;IACb,MAAM,EAAE,GAAG,CAAA;IAEX,IAAI,cAAc,YAEjB;IAED,IAAI,IAAI,UASP;IAED,IAAI,IAAI,CAAC,IAAI,OAAA,EAiBZ;IAED,IAAI,QAAQ,IAAI,GAAG,CAgClB;IAED,IAAI,MAAM;;;;;;;;;;;;;;;MAET;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"shape.d.ts","sourceRoot":"","sources":["../../src/components/shape.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAA;AACpE,OAAO,SAAS,MAAM,gBAAgB,CAAA;AAEtC;;;;;;;;GAQG;AACH,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,SAAS;IAC1C,IAAI,SAAS,CAAC,KAAK,KAAA,EAElB;IAED,IAAI,SAAS,QAEZ;IAED,IAAI,SAAS,CAAC,KAAK,KAAA,EAElB;IAED,IAAI,SAAS,QAEZ;IAED,IAAI,SAAS,CAAC,KAAK,KAAA,EAElB;IAED,IAAI,SAAS,QAEZ;IAED,IAAI,IAAI,CAAC,IAAI,KAAA,EAEZ;IAED,IAAI,IAAI,QAEP;IAED,IAAI,KAAK,CAAC,KAAK,KAAA,EAEd;IAED,IAAI,KAAK,QAER;IAED,UAAU,CAAC,OAAO,EAAE,kBAAkB;IAMtC,MAAM,CAAC,GAAG,EAAE,kBAAkB;CAuC/B"}
1
+ {"version":3,"file":"shape.d.ts","sourceRoot":"","sources":["../../src/components/shape.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAA;AACpE,OAAO,SAAS,MAAM,gBAAgB,CAAA;AAQtC;;;;;;;;GAQG;AACH,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,SAAS;IAC1C,IAAI,SAAS,CAAC,KAAK,KAAA,EAElB;IAED,IAAI,SAAS,QAEZ;IAED,IAAI,SAAS,CAAC,KAAK,KAAA,EAElB;IAED,IAAI,SAAS,QAEZ;IAED,IAAI,SAAS,CAAC,KAAK,KAAA,EAElB;IAED,IAAI,SAAS,QAEZ;IAED,IAAI,IAAI,CAAC,IAAI,KAAA,EAEZ;IAED,IAAI,IAAI,QAEP;IAED,IAAI,KAAK,CAAC,KAAK,KAAA,EAEd;IAED,IAAI,KAAK,QAER;IAED,UAAU,CAAC,OAAO,EAAE,kBAAkB;IAMtC,MAAM,CAAC,GAAG,EAAE,kBAAkB;CA2D/B"}
@@ -1 +1 @@
1
- {"version":3,"file":"path-handler.d.ts","sourceRoot":"","sources":["../../../src/layer/modeler/path-handler.ts"],"names":[],"mappings":"AA6BA,MAAM,CAAC,OAAO,OAAO,WAAW;IAC9B,KAAK,EAAE,GAAG,CAAA;IACV,MAAM,EAAE,GAAG,CAAA;IACX,OAAO,EAAE,GAAG,CAAA;gBAEA,KAAK,EAAE,GAAG;IAItB,KAAK;IAML,IAAI,QAAQ,QAEX;IAED,QAAQ,CAAC,CAAC,KAAA,EAAE,CAAC,KAAA,EAAE,SAAS,KAAA,EAAE,KAAK,KAAA;IAoB/B,gBAAgB,CAAC,QAAQ,KAAA,EAAE,SAAS,KAAA,EAAE,CAAC,KAAA;IAmBvC,IAAI,CAAC,OAAO,KAAA,EAAE,SAAS,KAAA,EAAE,KAAK,KAAA;IAmC9B,UAAU,CAAC,CAAC,KAAA;IAYZ,WAAW,CAAC,CAAC,KAAA;IAIb,WAAW,CAAC,CAAC,KAAA;IAab,UAAU,CAAC,CAAC,KAAA;IA8IZ,SAAS,CAAC,CAAC,KAAA;CAsDZ"}
1
+ {"version":3,"file":"path-handler.d.ts","sourceRoot":"","sources":["../../../src/layer/modeler/path-handler.ts"],"names":[],"mappings":"AA0CA,MAAM,CAAC,OAAO,OAAO,WAAW;IAC9B,KAAK,EAAE,GAAG,CAAA;IACV,MAAM,EAAE,GAAG,CAAA;IACX,OAAO,EAAE,GAAG,CAAA;gBAEA,KAAK,EAAE,GAAG;IAItB,KAAK;IAML,IAAI,QAAQ,QAEX;IAED,QAAQ,CAAC,CAAC,KAAA,EAAE,CAAC,KAAA,EAAE,SAAS,KAAA,EAAE,KAAK,KAAA;IA6D/B,gBAAgB,CAAC,QAAQ,KAAA,EAAE,SAAS,KAAA,EAAE,CAAC,KAAA;IAmBvC,IAAI,CAAC,OAAO,KAAA,EAAE,SAAS,KAAA,EAAE,KAAK,KAAA;IAgG9B,UAAU,CAAC,CAAC,KAAA;IAiCZ,WAAW,CAAC,CAAC,KAAA;IAIb,WAAW,CAAC,CAAC,KAAA;IAkBb,UAAU,CAAC,CAAC,KAAA;IAgLZ,SAAS,CAAC,CAAC,KAAA;CAsDZ"}
@@ -56,4 +56,6 @@ export { default as TransitionEffect } from '../transition/transition-effect.js'
56
56
  export * from '../placement/index.js';
57
57
  export * from '../search/index.js';
58
58
  export * from '../threed/index.js';
59
+ export * from '../types/polygon-path.js';
60
+ export * from '../types/polygon-path-arc.js';
59
61
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/things-scene/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/things-scene/index.ts"],"names":[],"mappings":"AAIA,OAAO,mBAAmB,CAAA;AAE1B,OAAO,QAAQ,MAAM,qBAAqB,CAAA;AAC1C,OAAO,UAAU,MAAM,uBAAuB,CAAA;AAC9C,OAAO,EAAE,MAAM,IAAI,OAAO,EAAE,KAAK,IAAI,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAEzE,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,aAAa,CAAA;AAC/C,YAAY,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAErD,MAAM,WAAW,KAAK;IACpB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CACnB;AAED,yBAAiB,KAAK,CAAC;IACd,MAAM,OAAO,iBAAW,CAAA;IACxB,MAAM,SAAS,mBAAa,CAAA;IAC5B,MAAM,MAAM,gBAAU,CAAA;IACtB,MAAM,KAAK,eAAS,CAAA;CAC5B;AAED,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,mBAAmB,CAAA;AACpD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,2BAA2B,CAAA;AAC/D,YAAY,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAE1D,cAAc,aAAa,CAAA;AAE3B,cAAc,uBAAuB,CAAA;AACrC,cAAc,wBAAwB,CAAA;AACtC,cAAc,oBAAoB,CAAA;AAClC,cAAc,mBAAmB,CAAA;AAGjC,YAAY,EACV,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAC/E,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,aAAa,EAAE,cAAc,EAAE,OAAO,EACxE,SAAS,EAAE,YAAY,EAAE,cAAc,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EACzE,MAAM,wBAAwB,CAAA;AAC/B,YAAY,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AACpH,YAAY,EACV,kBAAkB,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EACxF,WAAW,EAAE,aAAa,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,EACtE,MAAM,4BAA4B,CAAA;AACnC,YAAY,EAAE,OAAO,EAAE,MAAM,2CAA2C,CAAA;AACxE,YAAY,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AACrE,YAAY,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAA;AAG/D,YAAY,EACV,IAAI,EACJ,KAAK,EACL,OAAO,EACP,eAAe,EACf,SAAS,EACT,OAAO,EACP,cAAc,EACd,eAAe,EACf,YAAY,EACZ,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,IAAI,EACJ,iBAAiB,EACjB,aAAa,EACb,kBAAkB,EAClB,mBAAmB,EACnB,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,OAAO,EACP,qBAAqB,EACrB,aAAa,EACb,cAAc,EACd,eAAe,EACf,WAAW,EACX,UAAU,EACV,SAAS,EACT,eAAe,EAEf,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,mBAAmB,EACnB,gBAAgB,EAChB,cAAc,EACd,YAAY,EAEZ,QAAQ,EACR,cAAc,EACd,WAAW,EACX,eAAe,EACf,QAAQ,EACR,2BAA2B,EAC3B,kBAAkB,EACnB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,EAEd,QAAQ,EACR,WAAW,EACX,aAAa,EAEb,WAAW,EACX,0BAA0B,EAC1B,gBAAgB,EAChB,gBAAgB,EAChB,wBAAwB,EACzB,MAAM,sBAAsB,CAAA;AAI7B,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AACzF,YAAY,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAIhD,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,EACnB,QAAQ,EACR,aAAa,EACb,aAAa,EACb,kBAAkB,EACnB,MAAM,wBAAwB,CAAA;AAC/B,YAAY,EACV,YAAY,EACZ,IAAI,EACJ,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,QAAQ,EACR,UAAU,EACV,WAAW,EACX,YAAY,EACZ,WAAW,EACX,QAAQ,EACR,eAAe,EACf,SAAS,EACT,aAAa,EACb,WAAW,EACX,gBAAgB,EAChB,SAAS,EACT,QAAQ,EACR,cAAc,EACd,OAAO,EACP,OAAO,EACP,oBAAoB,EACrB,MAAM,wBAAwB,CAAA;AAG/B,OAAO,EAAE,sBAAsB,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAA;AACvG,YAAY,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAA;AAG5H,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC9C,YAAY,EACV,UAAU,EACV,WAAW,EACX,WAAW,EACX,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EAClB,qBAAqB,EACrB,uBAAuB,EACxB,MAAM,mBAAmB,CAAA;AAE1B,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAClE,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAElE,cAAc,mBAAmB,CAAA;AAEjC,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,YAAY,CAAA;AAE7C,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,cAAc,CAAA;AACjD,OAAO,EAAE,OAAO,IAAI,GAAG,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AACzD,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAA;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAA;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAA;AAC5D,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,cAAc,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAA;AAClH,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAA;AACnE,YAAY,EAAE,gBAAgB,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAA;AACxG,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAA;AAElE,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAChE,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oCAAoC,CAAA;AAGhF,cAAc,uBAAuB,CAAA;AAGrC,cAAc,oBAAoB,CAAA;AAGlC,cAAc,oBAAoB,CAAA;AAGlC,cAAc,0BAA0B,CAAA;AACxC,cAAc,8BAA8B,CAAA"}
@@ -1,5 +1,13 @@
1
1
  import * as THREE from 'three';
2
2
  import { RealObjectExtrude } from '../real-object-extrude.js';
3
+ /**
4
+ * 호(bulge) 가 chord 한쪽으로 부풀면 ExtrudeGeometry 의 mesh BBox center 가
5
+ * 그 쪽으로 이동한다. RealObjectExtrude.createGeometry 의 `geometry.center()` 가
6
+ * 그 이동된 BBox center 를 (0,0) 으로 시프트 → polygon 통째가 호 반대편으로 어긋남.
7
+ *
8
+ * 여기서는 path vertex 만의 BBox center 로 정렬되도록 createGeometry 를 오버라이드.
9
+ * 핸들 위치(보드 좌표 = path vertex 좌표) 와 mesh 위치가 일치한다.
10
+ */
3
11
  export declare class PolygonExtrude extends RealObjectExtrude {
4
12
  _minMax?: {
5
13
  minX?: number;
@@ -8,6 +16,17 @@ export declare class PolygonExtrude extends RealObjectExtrude {
8
16
  maxY?: number;
9
17
  };
10
18
  get shape(): THREE.Shape;
19
+ /**
20
+ * super.build() 와 거의 동일하지만 BoundUVGenerator 의 BBox 를 호 포함 shape
21
+ * 이 아닌 path vertex 만의 BBox 로 설정. 패턴 텍스처가 vertex BBox 기준
22
+ * (= component bounds) 으로 매핑되어 Rect 와 동일한 시각이 나온다.
23
+ */
24
+ build(): void;
25
+ /**
26
+ * mesh BBox center 가 아닌 path vertex BBox center 로 정렬한다.
27
+ * 호 영역이 chord 한쪽으로 부풀어도 polygon 통째 위치가 어긋나지 않도록.
28
+ */
29
+ createGeometry(shape: THREE.Shape): THREE.BufferGeometry;
11
30
  get minMax(): {
12
31
  minX?: number;
13
32
  minY?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"polygon.d.ts","sourceRoot":"","sources":["../../../src/threed/factories/polygon.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAG7D,qBAAa,cAAe,SAAQ,iBAAiB;IACnD,OAAO,CAAC,EAAE;QACR,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,IAAI,CAAC,EAAE,MAAM,CAAA;KACd,CAAA;IAED,IAAI,KAAK,gBAoCR;IAED,IAAI,MAAM;eA5CD,MAAM;eACN,MAAM;eACN,MAAM;eACN,MAAM;MAwEd;CACF"}
1
+ {"version":3,"file":"polygon.d.ts","sourceRoot":"","sources":["../../../src/threed/factories/polygon.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAS7D;;;;;;;GAOG;AAEH,qBAAa,cAAe,SAAQ,iBAAiB;IACnD,OAAO,CAAC,EAAE;QACR,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,IAAI,CAAC,EAAE,MAAM,CAAA;KACd,CAAA;IAED,IAAI,KAAK,gBAoER;IAED;;;;OAIG;IACH,KAAK;IAiDL;;;OAGG;IACH,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,cAAc;IAsCxD,IAAI,MAAM;eA5KD,MAAM;eACN,MAAM;eACN,MAAM;eACN,MAAM;MAwMd;CACF"}
@@ -20,8 +20,14 @@ export declare class VertexGizmoManager {
20
20
  private _activeComponent?;
21
21
  private _activeVertexHandles;
22
22
  private _activeHandleIndex;
23
+ private _activeKind;
24
+ private _activeHandle?;
23
25
  private _isDragging;
24
26
  private _isExtending;
27
+ private _isPending;
28
+ private _pendingHit?;
29
+ private _pendingHandleType?;
30
+ private _pendingScreenStart;
25
31
  private _dragPlane;
26
32
  private _dragOffset;
27
33
  private _raycaster;
@@ -50,6 +56,8 @@ export declare class VertexGizmoManager {
50
56
  private _rebuildComponentHandles;
51
57
  private _createVertexHandle;
52
58
  private _createMidpointHandle;
59
+ private _createCornerHandle;
60
+ private _createBulgeHandle;
53
61
  /**
54
62
  * 3D 핸들 위치 → 2D path 포인트 역변환
55
63
  */
@@ -63,10 +71,33 @@ export declare class VertexGizmoManager {
63
71
  /** 컴포넌트에 속하는 ComponentHandles를 찾는다 */
64
72
  private _findComponentHandles;
65
73
  /**
66
- * 마우스 다운: vertex/midpoint 핸들 raycast hit 감지 → 드래그 시작.
74
+ * 마우스 다운: 핸들 raycast hit 감지 → **pending 상태 진입** (드래그 시작 X).
75
+ *
76
+ * 2D `ua-event-handler.ts` 와 동일 컨벤션: mousedown 만으로 path mutation 을 일으키지
77
+ * 않고, mousemove 가 DRAG_THRESHOLD_PX2 를 넘는 순간 dragstart 처리.
78
+ * 이전엔 midpoint 핸들 클릭만 해도 vertex 가 즉시 추가되었고, vertex 클릭만 해도
79
+ * mouseup 에서 no-op CommandChange 가 쌓였다 — 두 케이스 모두 2D 와 다른 거동.
80
+ *
81
+ * vertex/midpoint 우선 raycast — corner/bulge 는 vertex 가 hit 안 될 때만 검사.
82
+ * 같은 ray 위에 vertex 와 corner 가 겹칠 때 vertex 가 우선되도록.
83
+ *
67
84
  * @returns true이면 이벤트를 소비
68
85
  */
69
86
  onPointerDown(ndc: THREE.Vector2, camera: THREE.Camera, event: MouseEvent): boolean;
87
+ /**
88
+ * pending 상태에서 임계값 통과 시점에 호출 — kind 별 dragstart 처리.
89
+ * `_startMidpointDrag` 는 vertex 를 splice 하므로 이 시점까지 path mutation 이 미뤄진다.
90
+ */
91
+ private _beginDrag;
92
+ /**
93
+ * corner radius 핸들 드래그 시작 — 보드 평면 ray-cast 로 드래그 좌표를 받아
94
+ * cornerRadiusFromDrag 으로 새 radius 계산.
95
+ */
96
+ private _startCornerDrag;
97
+ /**
98
+ * bulge 핸들 드래그 시작.
99
+ */
100
+ private _startBulgeDrag;
70
101
  /**
71
102
  * midpoint 핸들 드래그 시작: 세그먼트 중간에 새 vertex를 삽입
72
103
  */
@@ -80,20 +111,35 @@ export declare class VertexGizmoManager {
80
111
  */
81
112
  private _setupDragPlane;
82
113
  /**
83
- * 마우스 이동: 드래그 중이면 핸들 이동.
114
+ * 마우스 이동: pending 경우 임계값 검사 후 dragstart, 그 후 dragmove 처리.
115
+ *
116
+ * 첫 mousemove 가 임계값을 넘는 순간 `_beginDrag` 호출 — 이 함수가 _setupDragPlane 까지
117
+ * 처리하므로 같은 mousemove 내에서 fallthrough 로 dragmove 까지 이어지면 된다.
84
118
  */
85
119
  onPointerMove(ndc: THREE.Vector2, camera: THREE.Camera, event: MouseEvent): boolean;
120
+ /** corner 드래그 라이브 갱신 — 보드 좌표 변환 후 cornerRadiusFromDrag */
121
+ private _dragCornerLive;
122
+ /** bulge 드래그 라이브 갱신 */
123
+ private _dragBulgeLive;
86
124
  /**
87
125
  * 현재 활성 컴포넌트의 vertex 핸들 위치로부터 Line2 geometry를 실시간 업데이트한다.
88
126
  */
89
127
  private _updateLinePreview;
90
128
  /**
91
129
  * 마우스 업: 드래그 종료 → component.mutatePath() 호출.
130
+ *
131
+ * pending 만 있고 드래그가 시작 안 된 경우 = 클릭만. mutation 없이 정리만 한다
132
+ * (2D 와 동일 — 클릭은 path 를 더럽히지 않음). dblclick 은 별개 이벤트라 정리해도 무방.
92
133
  */
93
134
  onPointerUp(): boolean;
94
135
  /**
95
- * 더블클릭: vertex 핸들 위에서 더블클릭하면 해당 vertex 삭제.
96
- * @returns true이면 이벤트를 소비
136
+ * 더블클릭:
137
+ * - vertex 핸들 vertex 삭제 (기존)
138
+ * - corner 핸들 → radius 제거 (직각 복귀)
139
+ * - bulge 핸들 → bulge 제거 (직선 복귀)
140
+ *
141
+ * vertex 우선 raycast — corner/bulge 는 vertex 가 hit 안 될 때만 검사.
142
+ * onPointerDown 과 동일 컨벤션 (vertex 위 클릭이 corner 로 떨어지지 않도록).
97
143
  */
98
144
  onDblClick(ndc: THREE.Vector2, camera: THREE.Camera): boolean;
99
145
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"vertex-gizmo-manager.d.ts","sourceRoot":"","sources":["../../../src/threed/managers/vertex-gizmo-manager.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,KAAK,SAAS,MAAM,+BAA+B,CAAA;AA2B1D;;;;;;;;;;;GAWG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,iBAAiB,CAAyB;IAClD,OAAO,CAAC,YAAY,CAAC,CAAa;IAClC,OAAO,CAAC,QAAQ,CAAC,CAAa;IAC9B,OAAO,CAAC,UAAU,CAAC,CAAK;IAGxB,OAAO,CAAC,gBAAgB,CAAC,CAAW;IACpC,OAAO,CAAC,oBAAoB,CAAmB;IAC/C,OAAO,CAAC,kBAAkB,CAAK;IAC/B,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,YAAY,CAAQ;IAC5B,OAAO,CAAC,UAAU,CAAoB;IACtC,OAAO,CAAC,WAAW,CAAsB;IACzC,OAAO,CAAC,UAAU,CAAwB;IAC1C,OAAO,CAAC,aAAa,CAAsB;IAE3C,IAAI,UAAU,YAA8B;IAC5C,IAAI,UAAU,YAA+C;IAE7D,gCAAgC;IAChC,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAMlC;;OAEG;IACH,cAAc,CAAC,UAAU,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,GAAG,GAAG,IAAI;IAqBlF,4BAA4B;IAC5B,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,GAAG,GAAG,IAAI;IAIvE;;OAEG;IACH,MAAM,IAAI,IAAI;IAiBd;;OAEG;IACH,OAAO,CAAC,sBAAsB;IA2C9B;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAmBhC,OAAO,CAAC,mBAAmB;IAiB3B,OAAO,CAAC,qBAAqB;IAiB7B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAgBzB;;OAEG;IACH,OAAO,CAAC,eAAe;IAWvB,yBAAyB;IACzB,OAAO,CAAC,cAAc;IAQtB,sCAAsC;IACtC,OAAO,CAAC,qBAAqB;IAI7B;;;OAGG;IACH,aAAa,CAAC,GAAG,EAAE,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO;IAgDnF;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA0B1B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IA2B5B;;OAEG;IACH,OAAO,CAAC,eAAe;IASvB;;OAEG;IACH,aAAa,CAAC,GAAG,EAAE,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO;IA6BnF;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAwB1B;;OAEG;IACH,WAAW,IAAI,OAAO;IA+BtB;;;OAGG;IACH,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,OAAO;IA8B7D;;OAEG;IACH,WAAW,IAAI,IAAI;IAMnB;;OAEG;IACH,kBAAkB,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,IAAI;IAuB9C,OAAO,IAAI,IAAI;CAGhB"}
1
+ {"version":3,"file":"vertex-gizmo-manager.d.ts","sourceRoot":"","sources":["../../../src/threed/managers/vertex-gizmo-manager.ts"],"names":[],"mappings":"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"}
@@ -14,7 +14,7 @@ import { BoundUVGenerator } from './utils/bound-uv-generator.js';
14
14
  */
15
15
  export declare class RealObjectExtrude extends RealObject {
16
16
  _boundUVGenerator?: BoundUVGenerator;
17
- private _mesh?;
17
+ protected _mesh?: THREE.Mesh;
18
18
  clear(): THREE.Object3D<THREE.Object3DEventMap>;
19
19
  get shape(): any;
20
20
  get boundUVGenerator(): BoundUVGenerator;
@@ -34,5 +34,14 @@ export declare class RealObjectExtrude extends RealObject {
34
34
  */
35
35
  private _applyCapTexture;
36
36
  updateDimension(): void;
37
+ /**
38
+ * path 변경 시 geometry 만 교체 (material/texture 보존).
39
+ *
40
+ * 이전엔 `update()` (clear + build) 호출했는데, 그러면 build 가 새 materials 를
41
+ * 만들고 updateFillStyle → 패턴인 경우 patternTextTexture 비동기 이미지 로드를
42
+ * 매번 다시 시작 → drag 중 race 로 패턴 깜빡임/누락. geometry 만 교체하면
43
+ * material/CanvasTexture 가 그대로 보존되어 안정.
44
+ */
45
+ onchange(after: any, before: any): void;
37
46
  }
38
47
  //# sourceMappingURL=real-object-extrude.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"real-object-extrude.d.ts","sourceRoot":"","sources":["../../src/threed/real-object-extrude.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAE7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAA;AAOhE;;;;;;;;;;GAUG;AACH,qBAAa,iBAAkB,SAAQ,UAAU;IAC/C,iBAAiB,CAAC,EAAE,gBAAgB,CAAA;IACpC,OAAO,CAAC,KAAK,CAAC,CAAY;IAE1B,KAAK;IAKL,IAAI,KAAK,IAAI,GAAG,CAEf;IAED,IAAI,gBAAgB,qBAInB;IAED,KAAK;IAoCL,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,cAAc;IAoBxD,eAAe,IAAI,KAAK,CAAC,QAAQ,EAAE;IAcnC,aAAa;IAqBb,OAAO,CAAC,YAAY;IAMpB,gBAAgB;IAYhB,WAAW;IAUX,iBAAiB;IAQjB,eAAe;IAIf,UAAU;IAIV;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IA+DxB,eAAe;CAMhB"}
1
+ {"version":3,"file":"real-object-extrude.d.ts","sourceRoot":"","sources":["../../src/threed/real-object-extrude.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAE7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAA;AAOhE;;;;;;;;;;GAUG;AACH,qBAAa,iBAAkB,SAAQ,UAAU;IAC/C,iBAAiB,CAAC,EAAE,gBAAgB,CAAA;IACpC,SAAS,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,IAAI,CAAA;IAE5B,KAAK;IAKL,IAAI,KAAK,IAAI,GAAG,CAEf;IAED,IAAI,gBAAgB,qBAInB;IAED,KAAK;IAoCL,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,cAAc;IAoBxD,eAAe,IAAI,KAAK,CAAC,QAAQ,EAAE;IAcnC,aAAa;IAqBb,OAAO,CAAC,YAAY;IAMpB,gBAAgB;IAYhB,WAAW;IAUX,iBAAiB;IAQjB,eAAe;IAIf,UAAU;IAIV;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IA+DxB,eAAe;IAMf;;;;;;;OAOG;IACH,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG;CAajC"}
@@ -1 +1 @@
1
- {"version":3,"file":"fillstyle-texture.d.ts","sourceRoot":"","sources":["../../../src/threed/texture/fillstyle-texture.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,SAAS,MAAM,+BAA+B,CAAA;AAG1D;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE;IACT,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,UAAU,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;IAClD,uDAAuD;IACvD,aAAa,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;CACtD,EACD,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,GACR,iBAAiB,GAAG,IAAI,CAyC1B;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,GAAG,KAAK,CAAC,OAAO,CAqGvF;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE;IAAE,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;CAAE,GAC1H,KAAK,CAAC,aAAa,GAAG,SAAS,CASjC;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,SAAS,EACpB,iBAAiB,CAAC,EAAE,OAAO,GAC1B,KAAK,CAAC,OAAO,GAAG,SAAS,CAkB3B"}
1
+ {"version":3,"file":"fillstyle-texture.d.ts","sourceRoot":"","sources":["../../../src/threed/texture/fillstyle-texture.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,SAAS,MAAM,+BAA+B,CAAA;AAG1D;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE;IACT,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,UAAU,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;IAClD,uDAAuD;IACvD,aAAa,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;CACtD,EACD,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,GACR,iBAAiB,GAAG,IAAI,CAyC1B;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,GAAG,KAAK,CAAC,OAAO,CAsJvF;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE;IAAE,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;CAAE,GAC1H,KAAK,CAAC,aAAa,GAAG,SAAS,CASjC;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,SAAS,EACpB,iBAAiB,CAAC,EAAE,OAAO,GAC1B,KAAK,CAAC,OAAO,GAAG,SAAS,CAkB3B"}
@@ -10,4 +10,6 @@ export { Transfer, transferLog, receiptToJSON } from './transfer.js';
10
10
  export type { TransferPhase, TransferTimeline, TransferReceipt, TransferReceiptJSON, TransferLogStats, PhysicalRunner, TransferInit } from './transfer.js';
11
11
  export { ReservationTable, reservationTable, standardYieldPolicy, NavGraph, buildNavGraph, planPathAStar, planToReservations } from '../navigation/index.js';
12
12
  export type { LaneGeometry, Lane, ConflictPair, Intersection, NavPolygon, OpenZone, TimeWindow, Reservation, SpeedProfile, PathSegment, PathPlan, PathPlanOptions, Navigable, YieldDecision, YieldPolicy, ReservationEvent, AddResult, Conflict, ConflictRecord, NavNode, NavEdge, BuildNavGraphOptions } from '../navigation/index.js';
13
+ export * from '../types/polygon-path.js';
14
+ export * from '../types/polygon-path-arc.js';
13
15
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/transfer/index.ts"],"names":[],"mappings":"AAIA,YAAY,EACV,IAAI,EACJ,KAAK,EACL,OAAO,EACP,eAAe,EACf,SAAS,EACT,OAAO,EACP,cAAc,EACd,eAAe,EACf,YAAY,EACZ,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,IAAI,EACJ,iBAAiB,EACjB,aAAa,EACb,kBAAkB,EAClB,mBAAmB,EACnB,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,OAAO,EACP,qBAAqB,EACrB,aAAa,EACb,cAAc,EACd,eAAe,EACf,WAAW,EACX,UAAU,EACV,SAAS,EAET,QAAQ,EACR,cAAc,EACd,WAAW,EACX,eAAe,EACf,QAAQ,EACT,MAAM,YAAY,CAAA;AAGnB,OAAO,EACL,WAAW,EACX,0BAA0B,EAC1B,gBAAgB,EAChB,gBAAgB,EAChB,wBAAwB,EACzB,MAAM,qBAAqB,CAAA;AAC5B,YAAY,EAAE,2BAA2B,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AAE1F,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAC/E,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAA;AACpE,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAC9E,YAAY,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAItD,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AACpE,YAAY,EACV,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,mBAAmB,EACnB,gBAAgB,EAChB,cAAc,EACd,YAAY,EACb,MAAM,eAAe,CAAA;AAItB,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,EACnB,QAAQ,EACR,aAAa,EACb,aAAa,EACb,kBAAkB,EACnB,MAAM,wBAAwB,CAAA;AAC/B,YAAY,EACV,YAAY,EACZ,IAAI,EACJ,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,QAAQ,EACR,UAAU,EACV,WAAW,EACX,YAAY,EACZ,WAAW,EACX,QAAQ,EACR,eAAe,EACf,SAAS,EACT,aAAa,EACb,WAAW,EACX,gBAAgB,EAChB,SAAS,EACT,QAAQ,EACR,cAAc,EACd,OAAO,EACP,OAAO,EACP,oBAAoB,EACrB,MAAM,wBAAwB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/transfer/index.ts"],"names":[],"mappings":"AAIA,YAAY,EACV,IAAI,EACJ,KAAK,EACL,OAAO,EACP,eAAe,EACf,SAAS,EACT,OAAO,EACP,cAAc,EACd,eAAe,EACf,YAAY,EACZ,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,IAAI,EACJ,iBAAiB,EACjB,aAAa,EACb,kBAAkB,EAClB,mBAAmB,EACnB,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,OAAO,EACP,qBAAqB,EACrB,aAAa,EACb,cAAc,EACd,eAAe,EACf,WAAW,EACX,UAAU,EACV,SAAS,EAET,QAAQ,EACR,cAAc,EACd,WAAW,EACX,eAAe,EACf,QAAQ,EACT,MAAM,YAAY,CAAA;AAGnB,OAAO,EACL,WAAW,EACX,0BAA0B,EAC1B,gBAAgB,EAChB,gBAAgB,EAChB,wBAAwB,EACzB,MAAM,qBAAqB,CAAA;AAC5B,YAAY,EAAE,2BAA2B,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AAE1F,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAC/E,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAA;AACpE,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAC9E,YAAY,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAItD,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AACpE,YAAY,EACV,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,mBAAmB,EACnB,gBAAgB,EAChB,cAAc,EACd,YAAY,EACb,MAAM,eAAe,CAAA;AAItB,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,EACnB,QAAQ,EACR,aAAa,EACb,aAAa,EACb,kBAAkB,EACnB,MAAM,wBAAwB,CAAA;AAC/B,YAAY,EACV,YAAY,EACZ,IAAI,EACJ,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,QAAQ,EACR,UAAU,EACV,WAAW,EACX,YAAY,EACZ,WAAW,EACX,QAAQ,EACR,eAAe,EACf,SAAS,EACT,aAAa,EACb,WAAW,EACX,gBAAgB,EAChB,SAAS,EACT,QAAQ,EACR,cAAc,EACd,OAAO,EACP,OAAO,EACP,oBAAoB,EACrB,MAAM,wBAAwB,CAAA;AAG/B,cAAc,0BAA0B,CAAA;AACxC,cAAc,8BAA8B,CAAA"}
@@ -0,0 +1,72 @@
1
+ /**
2
+ * Polygon path arc-length / sampling.
3
+ *
4
+ * Phase L 의 PolygonPathPoint(per-vertex radius + bulge) 를 polyline 으로 평탄화하여
5
+ * 전체 길이 계산과 임의 위치(s ∈ [0, L)) 의 좌표·접선각 sampling 을 제공한다.
6
+ *
7
+ * 평탄화 로직은 `PolygonExtrude.shape` 의 corner round(quadratic Bezier) + bulge arc
8
+ * 처리와 동일 — 시각(extruded mesh)과 시뮬(carrier 위치)이 어긋나지 않는다.
9
+ *
10
+ * 사용자(loop-conveyor 등): path 가 변하지 않는 동안 결과를 캐시하여 매 carrier sample
11
+ * 마다 재계산을 피한다.
12
+ */
13
+ import { type PolygonPathPoint } from './polygon-path.js';
14
+ /** Path sampling 옵션. */
15
+ export interface PathArcOptions {
16
+ /** Closed loop (path[N-1] → path[0] 자동 연결, 모든 vertex 에 corner round 적용 가능). default true. */
17
+ closed?: boolean;
18
+ /** per-vertex radius 가 없을 때 fallback (state.round). default 0. */
19
+ round?: number;
20
+ /** corner round (quadratic Bezier) / bulge arc 의 segment 당 sub-division 수. default 24. */
21
+ divisions?: number;
22
+ }
23
+ /** Path 위 한 점의 sample. */
24
+ export interface PathSample {
25
+ x: number;
26
+ y: number;
27
+ /** 진행 방향 접선각(라디안). atan2(dy, dx). */
28
+ theta: number;
29
+ }
30
+ /**
31
+ * 평탄화된 polygon path. 길이/sample 의 cache 컨테이너.
32
+ *
33
+ * `path` 가 변하면 인스턴스를 다시 만들어야 한다 (mutation 추적 X).
34
+ */
35
+ export declare class PolygonPathPolyline {
36
+ /** 평탄화된 점들. closed 면 마지막 점 = 첫 점. */
37
+ readonly points: ReadonlyArray<{
38
+ x: number;
39
+ y: number;
40
+ }>;
41
+ /** points[i] 까지의 누적 arc length. cumulative[0] = 0. */
42
+ readonly cumulative: ReadonlyArray<number>;
43
+ /** 전체 arc length. closed 면 폐루프 한 바퀴 길이. */
44
+ readonly length: number;
45
+ /** closed 여부 (sample 시 wraparound 결정). */
46
+ readonly closed: boolean;
47
+ constructor(points: {
48
+ x: number;
49
+ y: number;
50
+ }[], closed: boolean);
51
+ /**
52
+ * Path 위 거리 `s` 에서의 좌표 + 접선각.
53
+ * closed 면 s 는 자동 modulo wrap. open 이면 [0, length] 로 clamp.
54
+ */
55
+ sample(s: number): PathSample;
56
+ }
57
+ /**
58
+ * Polygon path 를 polyline 으로 평탄화. PolygonExtrude.shape 와 동일 sampling 로직.
59
+ *
60
+ * - corner round: quadratic Bezier (p1, cursor, p2) 를 `divisions` 분할
61
+ * - bulge arc: computeArcParams 의 (cx, cy, r, startAngle, endAngle, clockwise) 를
62
+ * `divisions` 분할 (clockwise 부호에 맞춰 angle 진행)
63
+ * - closed=true: 마지막 점에서 첫 점까지 segment 로 닫음
64
+ * - closed=false: path[0] 와 path[N-1] 은 corner round 적용 안 함 (한쪽 변뿐)
65
+ */
66
+ export declare function flattenPolygonPath(path: PolygonPathPoint[], options?: PathArcOptions): PolygonPathPolyline;
67
+ /**
68
+ * Polygon path 의 전체 arc length. 짧은 한 줄 helper.
69
+ * 반복 호출 시 `flattenPolygonPath` 결과를 캐시하라 (이 함수는 매번 평탄화한다).
70
+ */
71
+ export declare function polygonPathLength(path: PolygonPathPoint[], options?: PathArcOptions): number;
72
+ //# sourceMappingURL=polygon-path-arc.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"polygon-path-arc.d.ts","sourceRoot":"","sources":["../../src/types/polygon-path-arc.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;GAWG;AAEH,OAAO,EAIL,KAAK,gBAAgB,EACtB,MAAM,mBAAmB,CAAA;AAE1B,wBAAwB;AACxB,MAAM,WAAW,cAAc;IAC7B,6FAA6F;IAC7F,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,kEAAkE;IAClE,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,0FAA0F;IAC1F,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,0BAA0B;AAC1B,MAAM,WAAW,UAAU;IACzB,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,qCAAqC;IACrC,KAAK,EAAE,MAAM,CAAA;CACd;AAQD;;;;GAIG;AACH,qBAAa,mBAAmB;IAC9B,qCAAqC;IACrC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACxD,sDAAsD;IACtD,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;IAC1C,2CAA2C;IAC3C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,0CAA0C;IAC1C,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;gBAEZ,MAAM,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,EAAE,MAAM,EAAE,OAAO;IAa/D;;;OAGG;IACH,MAAM,CAAC,CAAC,EAAE,MAAM,GAAG,UAAU;CAkC9B;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,gBAAgB,EAAE,EACxB,OAAO,GAAE,cAAmB,GAC3B,mBAAmB,CAiHrB;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,gBAAgB,EAAE,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,MAAM,CAE5F"}
@@ -0,0 +1,153 @@
1
+ /**
2
+ * Polygon-style path point.
3
+ *
4
+ * 폐루프(폴리곤) 모델링에서 per-vertex 코너 라운드, 호, 3D 높이까지 표현하기 위한 확장 좌표.
5
+ *
6
+ * - x, y: 평면 좌표 (2D 캔버스, 동시에 3D 의 x, z 평면)
7
+ * - z: 3D 에서의 높이 (component base 로부터의 Y 오프셋). 2D 코드는 무시.
8
+ * - radius: per-vertex 코너 라운드 반지름. 미지정 시 state.round 로 fallback.
9
+ * - bulge: 다음 세그먼트에 적용할 sagitta(호의 화살 높이).
10
+ * 부호로 볼록/오목 결정 — 양수=화면 위쪽, 음수=화면 아래쪽.
11
+ * 항상 작은 호로 그려진다 (큰 호 / sweep flip 없음).
12
+ * |bulge| < BULGE_EPSILON 이면 직선으로 자동 취급.
13
+ *
14
+ * 모든 필드가 옵셔널이므로 기존 `{ x, y }[]` path 와 100% 호환.
15
+ */
16
+ export interface PolygonPathPoint {
17
+ x: number;
18
+ y: number;
19
+ z?: number;
20
+ radius?: number;
21
+ bulge?: number;
22
+ }
23
+ export type PolygonPath = PolygonPathPoint[];
24
+ /**
25
+ * 호로 취급하는 최소 sagitta. 부동소수점 노이즈로 의도한 직선이
26
+ * 미세 호로 잘못 해석되는 것을 막고, 핸들 드래그에서 line ↔ arc 자동 전환의 기준이 된다.
27
+ */
28
+ export declare const BULGE_EPSILON = 0.5;
29
+ /**
30
+ * 다음 세그먼트가 호로 그려지는지 여부 — |bulge| >= BULGE_EPSILON 일 때만 true.
31
+ */
32
+ export declare function hasArc(point: PolygonPathPoint): boolean;
33
+ export interface ArcParams {
34
+ cx: number;
35
+ cy: number;
36
+ radius: number;
37
+ startAngle: number;
38
+ endAngle: number;
39
+ clockwise: boolean;
40
+ }
41
+ /**
42
+ * 두 점 + sagitta(=bulge) 으로부터 호 파라미터 계산.
43
+ * - chord = |p2 - p1|
44
+ * - radius r = (chord² + 4·sagitta²) / (8·|sagitta|)
45
+ * - 중심은 chord 중점에서 chord 에 수직 방향으로 (r - |sagitta|) 만큼 이동
46
+ * - bulge 부호로 수직 방향(볼록/오목) 이 결정된다 — 항상 작은 호.
47
+ *
48
+ * 컨벤션 (캔버스 좌표계, y down): perp = (uy, -ux), 핸들 = mid + perp * bulge.
49
+ * 호는 핸들과 같은 쪽으로 부풀고, 중심은 그 반대편.
50
+ *
51
+ * cw:
52
+ * - bulge>0 → 중심이 perp 반대편 → angle 증가가 작은 호 (cw=false)
53
+ * - bulge<0 → 중심이 perp 같은 편 → angle 감소가 작은 호 (cw=true)
54
+ */
55
+ export declare function computeArcParams(p1: {
56
+ x: number;
57
+ y: number;
58
+ }, p2: {
59
+ x: number;
60
+ y: number;
61
+ }, bulge: number): ArcParams | null;
62
+ /**
63
+ * Bulge 핸들 ◇ 의 화면 위치.
64
+ *
65
+ * mid + perp * (bulge or displayMin). bulge=0 일 때도 핸들이 보이도록 displayMin 으로 보정.
66
+ */
67
+ export declare function bulgeHandlePosition(p1: {
68
+ x: number;
69
+ y: number;
70
+ }, p2: {
71
+ x: number;
72
+ y: number;
73
+ }, bulge?: number, displayMin?: number): {
74
+ x: number;
75
+ y: number;
76
+ perpX: number;
77
+ perpY: number;
78
+ } | null;
79
+ /**
80
+ * 드래그 좌표 → 새 bulge 값. perp 축 투영. |proj| < BULGE_EPSILON 이면 0 (line).
81
+ * chord 길이를 초과하지 않도록 클램프.
82
+ */
83
+ export declare function bulgeFromDrag(p1: {
84
+ x: number;
85
+ y: number;
86
+ }, p2: {
87
+ x: number;
88
+ y: number;
89
+ }, dragPoint: {
90
+ x: number;
91
+ y: number;
92
+ }): number;
93
+ /**
94
+ * 효과적 코너 반지름 — per-vertex `radius` 가 있으면 사용, 없으면 fallback.
95
+ * 음수/NaN 방어.
96
+ */
97
+ export declare function effectiveCornerRadius(point: PolygonPathPoint, fallbackRound: number): number;
98
+ /**
99
+ * 코너 라운드 핸들의 화면 위치 계산.
100
+ *
101
+ * cursor 에서 두 변(prev→cursor, cursor→next) 의 angle bisector(내각 이등분) 방향으로
102
+ * `dist` 만큼 이동한 점. `dist` 는 현재 라운드 값이거나, 너무 작으면 displayMin 으로 보정
103
+ * (radius=0 일 때도 핸들이 보이도록).
104
+ *
105
+ * 직선(180도) 코너는 bisector 가 0 → null 반환.
106
+ */
107
+ export declare function cornerHandlePosition(prev: {
108
+ x: number;
109
+ y: number;
110
+ }, cursor: {
111
+ x: number;
112
+ y: number;
113
+ }, next: {
114
+ x: number;
115
+ y: number;
116
+ }, effectiveR: number, displayMin?: number): {
117
+ x: number;
118
+ y: number;
119
+ bisectorX: number;
120
+ bisectorY: number;
121
+ } | null;
122
+ /**
123
+ * 드래그 좌표 → 새 corner radius 값 계산.
124
+ *
125
+ * 드래그 점을 angle bisector 축에 투영한 거리. 음수(반대편 방향)면 0 으로 클램프.
126
+ * 인접 변 길이의 절반을 초과하지 않도록 상한 적용.
127
+ */
128
+ export declare function cornerRadiusFromDrag(prev: {
129
+ x: number;
130
+ y: number;
131
+ }, cursor: {
132
+ x: number;
133
+ y: number;
134
+ }, next: {
135
+ x: number;
136
+ y: number;
137
+ }, dragPoint: {
138
+ x: number;
139
+ y: number;
140
+ }): number;
141
+ /**
142
+ * Path 의 모든 점이 동일한 z 를 갖는지 확인.
143
+ *
144
+ * 균일 z 인 경우: 전체 폴리곤이 평면 (수평) 폐루프 — `state.zPos` 만으로 표현 가능.
145
+ * 비균일 z 인 경우: 램프/뱅킹/엘리베이션 — 별도 BufferGeometry 빌더 필요 (Phase L.2b).
146
+ *
147
+ * 반환:
148
+ * - 모든 점에 z 가 없으면 0 (기본 평면)
149
+ * - 모든 점이 동일 z 를 갖으면 그 z 값
150
+ * - 점마다 z 가 다르면 null (variable z, 향후 처리)
151
+ */
152
+ export declare function uniformZ(path: PolygonPathPoint[]): number | null;
153
+ //# sourceMappingURL=polygon-path.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"polygon-path.d.ts","sourceRoot":"","sources":["../../src/types/polygon-path.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hatiolab/things-scene",
3
- "version": "10.0.0-beta.93",
3
+ "version": "10.0.0-beta.94",
4
4
  "description": "A high-performance 2D/3D scene graph library for building interactive visual editors, combining HTML5 Canvas and Three.js to enable facility visualization, data-driven animations, and real-time monitoring dashboards",
5
5
  "main": "things-scene-min.js",
6
6
  "module": "things-scene.mjs",