@things-factory/figure-ui 10.1.43 → 10.1.45
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/client/modeller/figure-v3-links.ts +303 -0
- package/client/modeller/modeller-route.ts +6 -21
- package/client/modeller/v3-editor.ts +44 -3
- package/client/modeller/v3-gizmo.ts +13 -2
- package/client/modeller/v3-links.ts +138 -0
- package/client/pages/figure-v3-modeller-page.ts +2 -5
- package/client/route.ts +2 -6
- package/dist-client/modeller/figure-v3-links.d.ts +42 -0
- package/dist-client/modeller/figure-v3-links.js +306 -0
- package/dist-client/modeller/figure-v3-links.js.map +1 -0
- package/dist-client/modeller/modeller-route.d.ts +4 -11
- package/dist-client/modeller/modeller-route.js +5 -22
- package/dist-client/modeller/modeller-route.js.map +1 -1
- package/dist-client/modeller/v3-editor.d.ts +5 -0
- package/dist-client/modeller/v3-editor.js +46 -2
- package/dist-client/modeller/v3-editor.js.map +1 -1
- package/dist-client/modeller/v3-gizmo.js +11 -1
- package/dist-client/modeller/v3-gizmo.js.map +1 -1
- package/dist-client/modeller/v3-links.d.ts +54 -0
- package/dist-client/modeller/v3-links.js +110 -0
- package/dist-client/modeller/v3-links.js.map +1 -0
- package/dist-client/pages/figure-v3-modeller-page.d.ts +2 -5
- package/dist-client/pages/figure-v3-modeller-page.js +2 -5
- package/dist-client/pages/figure-v3-modeller-page.js.map +1 -1
- package/dist-client/route.d.ts +1 -1
- package/dist-client/route.js +2 -5
- package/dist-client/route.js.map +1 -1
- package/dist-client/tsconfig.tsbuildinfo +1 -1
- package/package.json +4 -4
- package/test/ai-proposal-contract.test.ts +0 -88
- package/test/figure-source.test.ts +0 -102
- package/test/i18n-prefix-guard.test.ts +0 -24
- package/test/modeller-route.test.ts +14 -25
- package/test/part-edits.test.ts +0 -7
- package/test/scene-budget.test.ts +0 -7
- package/test/v3-gizmo.test.ts +10 -0
- package/test/v3-links.test.ts +123 -0
- package/things-factory.config.js +2 -5
- package/translations/en.json +6 -0
- package/translations/ja.json +11 -1
- package/translations/ko.json +6 -0
- package/translations/ms.json +11 -1
- package/translations/zh.json +11 -1
- package/client/modeller/angle-dial.ts +0 -70
- package/client/modeller/base-box.ts +0 -175
- package/client/modeller/figure-animations.ts +0 -1249
- package/client/modeller/figure-canvas.ts +0 -567
- package/client/modeller/figure-capabilities.ts +0 -379
- package/client/modeller/figure-inspector.ts +0 -2208
- package/client/modeller/figure-parts.ts +0 -479
- package/client/modeller/figure-preview.ts +0 -598
- package/client/modeller/figure-report.ts +0 -966
- package/client/modeller/figure-settings.ts +0 -328
- package/client/modeller/figure-side.ts +0 -272
- package/client/modeller/figure-thumbnail.ts +0 -123
- package/client/modeller/figure-view.ts +0 -152
- package/client/modeller/joint-edits.ts +0 -262
- package/client/modeller/joint-gizmo.ts +0 -180
- package/client/modeller/maturity.ts +0 -288
- package/client/modeller/new-figure-entry.ts +0 -4
- package/client/modeller/pose-defaults.ts +0 -67
- package/client/pages/figure-modeller-page.ts +0 -2082
- package/dist-client/modeller/angle-dial.d.ts +0 -32
- package/dist-client/modeller/angle-dial.js +0 -41
- package/dist-client/modeller/angle-dial.js.map +0 -1
- package/dist-client/modeller/base-box.d.ts +0 -71
- package/dist-client/modeller/base-box.js +0 -110
- package/dist-client/modeller/base-box.js.map +0 -1
- package/dist-client/modeller/figure-animations.d.ts +0 -159
- package/dist-client/modeller/figure-animations.js +0 -1132
- package/dist-client/modeller/figure-animations.js.map +0 -1
- package/dist-client/modeller/figure-canvas.d.ts +0 -150
- package/dist-client/modeller/figure-canvas.js +0 -506
- package/dist-client/modeller/figure-canvas.js.map +0 -1
- package/dist-client/modeller/figure-capabilities.d.ts +0 -42
- package/dist-client/modeller/figure-capabilities.js +0 -349
- package/dist-client/modeller/figure-capabilities.js.map +0 -1
- package/dist-client/modeller/figure-inspector.d.ts +0 -329
- package/dist-client/modeller/figure-inspector.js +0 -2095
- package/dist-client/modeller/figure-inspector.js.map +0 -1
- package/dist-client/modeller/figure-parts.d.ts +0 -64
- package/dist-client/modeller/figure-parts.js +0 -478
- package/dist-client/modeller/figure-parts.js.map +0 -1
- package/dist-client/modeller/figure-preview.d.ts +0 -138
- package/dist-client/modeller/figure-preview.js +0 -549
- package/dist-client/modeller/figure-preview.js.map +0 -1
- package/dist-client/modeller/figure-report.d.ts +0 -165
- package/dist-client/modeller/figure-report.js +0 -952
- package/dist-client/modeller/figure-report.js.map +0 -1
- package/dist-client/modeller/figure-settings.d.ts +0 -39
- package/dist-client/modeller/figure-settings.js +0 -317
- package/dist-client/modeller/figure-settings.js.map +0 -1
- package/dist-client/modeller/figure-side.d.ts +0 -78
- package/dist-client/modeller/figure-side.js +0 -317
- package/dist-client/modeller/figure-side.js.map +0 -1
- package/dist-client/modeller/figure-thumbnail.d.ts +0 -3
- package/dist-client/modeller/figure-thumbnail.js +0 -95
- package/dist-client/modeller/figure-thumbnail.js.map +0 -1
- package/dist-client/modeller/figure-view.d.ts +0 -118
- package/dist-client/modeller/figure-view.js +0 -78
- package/dist-client/modeller/figure-view.js.map +0 -1
- package/dist-client/modeller/joint-edits.d.ts +0 -49
- package/dist-client/modeller/joint-edits.js +0 -223
- package/dist-client/modeller/joint-edits.js.map +0 -1
- package/dist-client/modeller/joint-gizmo.d.ts +0 -34
- package/dist-client/modeller/joint-gizmo.js +0 -158
- package/dist-client/modeller/joint-gizmo.js.map +0 -1
- package/dist-client/modeller/maturity.d.ts +0 -55
- package/dist-client/modeller/maturity.js +0 -212
- package/dist-client/modeller/maturity.js.map +0 -1
- package/dist-client/modeller/new-figure-entry.d.ts +0 -2
- package/dist-client/modeller/new-figure-entry.js +0 -5
- package/dist-client/modeller/new-figure-entry.js.map +0 -1
- package/dist-client/modeller/pose-defaults.d.ts +0 -9
- package/dist-client/modeller/pose-defaults.js +0 -35
- package/dist-client/modeller/pose-defaults.js.map +0 -1
- package/dist-client/pages/figure-modeller-page.d.ts +0 -419
- package/dist-client/pages/figure-modeller-page.js +0 -2060
- package/dist-client/pages/figure-modeller-page.js.map +0 -1
- package/test/angle-dial.test.ts +0 -78
- package/test/base-box.test.ts +0 -235
- package/test/joint-edits.test.ts +0 -165
- package/test/joint-gizmo.test.ts +0 -174
- package/test/joint-needle.test.ts +0 -162
- package/test/modeller-undo-redo.test.ts +0 -33
- package/test/new-figure-entry.test.ts +0 -15
- package/test/pose-defaults.test.ts +0 -71
- package/test/preview-board-depth.test.ts +0 -27
|
@@ -1,329 +0,0 @@
|
|
|
1
|
-
import '@material/web/icon/icon.js';
|
|
2
|
-
import { LitElement } from 'lit';
|
|
3
|
-
import type { ContractChange } from '@hatiolab/figure-model';
|
|
4
|
-
import type { FigureDraft, PartModel } from './figure-source.js';
|
|
5
|
-
declare const FigureInspector_base: (new (...args: any[]) => LitElement) & typeof LitElement;
|
|
6
|
-
/**
|
|
7
|
-
* 고른 부품의 속성.
|
|
8
|
-
*
|
|
9
|
-
* ## 여기가 사용자 용어로 보여 주는 자리다
|
|
10
|
-
*
|
|
11
|
-
* 모델러 페이지가 갖고 있는 것은 **씬 모델**이다 — 기준 상자 위에 부품 컴포넌트가 놓인 상태.
|
|
12
|
-
* 그런데 사용자에게 보여야 하는 것은 씬 속성 이름(`left`·`top`·`zPos`)이 아니라
|
|
13
|
-
* **X·Y·Z** 다. 다른 3D 도구가 모두 그렇게 부르고, 위치도 부품의 **중심**으로 읽는다.
|
|
14
|
-
*
|
|
15
|
-
* 그래서 이 패널은 받은 부품을 FigureSource 형태로 **변환해서 보여 주고, 수정한 것을
|
|
16
|
-
* 다시 씬 모델로 되돌려 알린다.** 변환은 `figure-source.ts` 가 한다 — 여기서 축을 다시 계산하지
|
|
17
|
-
* 않는다.
|
|
18
|
-
*
|
|
19
|
-
* ## 있는 것만 보여 준다
|
|
20
|
-
*
|
|
21
|
-
* 분할 수는 곡면이 있는 도형에만, 모서리 굴림은 단면을 뽑는 도형에만 뜻이 있다.
|
|
22
|
-
* 뜻 없는 칸을 회색으로 늘어놓으면 저작자가 「왜 안 먹지」를 고민하게 된다 —
|
|
23
|
-
* 아예 내지 않는다.
|
|
24
|
-
*
|
|
25
|
-
* ## 이름은 저장되는 식별자다
|
|
26
|
-
*
|
|
27
|
-
* `FigurePart.name` 은 바인딩·애니메이션·슬롯이 가리키는 이름이다. 고치면 배치된
|
|
28
|
-
* 인스턴스의 바인딩이 **조용히** 끊긴다. 그래서 이름 칸에만 경고를 붙인다.
|
|
29
|
-
*
|
|
30
|
-
* ## 「상태 색이 붙는 자리」를 걷었다
|
|
31
|
-
*
|
|
32
|
-
* `FigurePart.materialSlot`(당시 이름은 `slot`) 을 고르는 칸이 있었는데 **아무 일도 하지 않았다.** things-scene 의
|
|
33
|
-
* figure 런타임이 `slot` 을 읽지 않는다 — 선언 한 줄이 전부다. 되는 줄 알고 만들었고,
|
|
34
|
-
* 확인하지 않은 것이 잘못이다.
|
|
35
|
-
*
|
|
36
|
-
* 그리고 되게 만들더라도 이 모양이 아니다. 상태 색은 특별한 것이 아니라 **속성 하나**이고,
|
|
37
|
-
* 툴팁·라벨·표시 여부와 같은 자리에서 다뤄져야 한다. 그 설계가 정해지면(figure-model#2)
|
|
38
|
-
* 이 자리에 **속성 선언과 부품 바인딩** 편집기가 들어온다.
|
|
39
|
-
*
|
|
40
|
-
* 그때까지 빈 약속을 두지 않는다. 아무 일도 안 하는 칸은 없느니만 못하다.
|
|
41
|
-
*
|
|
42
|
-
* ## 고치지 않는다
|
|
43
|
-
*
|
|
44
|
-
* 정본 한 벌은 저작면이 갖는다. 여기서는 바뀐 부품을 알릴 뿐이다.
|
|
45
|
-
*/
|
|
46
|
-
export declare class FigureInspector extends FigureInspector_base {
|
|
47
|
-
static styles: import("lit").CSSResult[];
|
|
48
|
-
/** 도형의 DB 식별자. 비어 있으면 미저장 신규 모델이다. */
|
|
49
|
-
figureId: string;
|
|
50
|
-
/**
|
|
51
|
-
* 발행 판 번호. 0 이면 한 번도 발행되지 않았고, 그때만 `type` 을 고칠 수 있다(ADR-0063 결정 4).
|
|
52
|
-
*/
|
|
53
|
-
figureVersion: number;
|
|
54
|
-
/**
|
|
55
|
-
* 타입이 굳었나 — **한 번이라도 발행됐으면 굳는다**(ADR-0063 결정 4).
|
|
56
|
-
*
|
|
57
|
-
* 저장되지 않은 새 도형과 아직 발행 전인 초안에서는 고칠 수 있다. 전에는 「저장됐나」로
|
|
58
|
-
* 갈랐고, 그래서 저작자가 기계가 지은 이름(`FIGURE_MU6RJH47`)을 한 번도 못 고쳤다.
|
|
59
|
-
*/
|
|
60
|
-
private get typeIsFixed();
|
|
61
|
-
/** 도형의 표시 이름. 정본은 저작면이 들고, 여기서는 보여 주고 바꾼다(`figure-rename` 으로 알린다). */
|
|
62
|
-
figureName: string;
|
|
63
|
-
/** 분류 하나 — 팔레트에서 묶는 기준. */
|
|
64
|
-
figureCategory?: string;
|
|
65
|
-
/** 태그 여럿 — 분류로는 못 하는 찾기. */
|
|
66
|
-
figureTags?: string[];
|
|
67
|
-
/** 펴 둔 도움말. 부품을 바꿔도 유지된다 — 매번 다시 펴게 하지 않는다. */
|
|
68
|
-
private opened;
|
|
69
|
-
draft?: FigureDraft;
|
|
70
|
-
/** 초안 위의 부품들. 씬 모델 그대로다. */
|
|
71
|
-
parts: PartModel[];
|
|
72
|
-
/**
|
|
73
|
-
* 이 고침이 이미 놓인 인스턴스에 무엇을 하나 — 발행된 도형에만 있다(ADR-0063 결정 3).
|
|
74
|
-
*
|
|
75
|
-
* 발행 문에서만 말하면 저작자는 열 군데를 고친 뒤에 듣는다. 고치는 칸 옆에서 말한다.
|
|
76
|
-
*/
|
|
77
|
-
contract: ContractChange[];
|
|
78
|
-
/** 견주지 못한 까닭. 빈 목록과 뜻이 다르다 — 「깨지 않는다」가 아니라 「모른다」다. */
|
|
79
|
-
contractFailure?: string;
|
|
80
|
-
selected: number;
|
|
81
|
-
/** `part` 는 HTMLElement 의 속성(DOMTokenList)이다 — 가리면 형이 어긋난다. */
|
|
82
|
-
private get chosen();
|
|
83
|
-
render(): import("lit-html").TemplateResult<1>;
|
|
84
|
-
/**
|
|
85
|
-
* ── 이 부품이 능력에서 맡는 자리 ────────────────────────────────────────────
|
|
86
|
-
*
|
|
87
|
-
* 「능력」 탭이 도형 전체가 무엇을 하는지 정하고, 어느 부품이 그것을 받쳐 주는지는 여기서
|
|
88
|
-
* 정한다. **부품을 고치는 곳이 한 군데여야** 하기 때문이다 — 목록을 따로 두면 같은 부품을
|
|
89
|
-
* 두 화면에서 고치게 되고, 저작자는 어느 쪽이 이기는지 매번 생각해야 한다.
|
|
90
|
-
*
|
|
91
|
-
* 칸 수는 `repeat` 가 있으면 받지 않는다. 반복하는 자리의 칸 수는 **인스턴스 크기**가 정한다 —
|
|
92
|
-
* 컨베이어가 길어지면 실을 자리가 늘어나는 것이 그것이고, 여기 적은 값은 안 쓰인다.
|
|
93
|
-
*/
|
|
94
|
-
private renderRole;
|
|
95
|
-
/**
|
|
96
|
-
* How this part hangs from another and moves relative to it (ADR-0066).
|
|
97
|
-
*
|
|
98
|
-
* The parent is written on the part. The joint says how the part moves relative to that parent, and the
|
|
99
|
-
* parameter it comes with is what drives it; the preview shows that parameter as a slider.
|
|
100
|
-
*/
|
|
101
|
-
private renderJoint;
|
|
102
|
-
private setParent;
|
|
103
|
-
/**
|
|
104
|
-
* 기준 상자를 고친다 — 부품은 저장되는 자리에 그대로 둔 채(`base-box.ts`).
|
|
105
|
-
*
|
|
106
|
-
* 초안과 부품이 함께 바뀌므로 둘을 한 번에 올린다. 따로 올리면 되돌리기가 둘로 갈리고, 그 사이
|
|
107
|
-
* 한 번만 되돌린 화면은 부품이 반쯤 밀린 모습이 된다.
|
|
108
|
-
*/
|
|
109
|
-
/**
|
|
110
|
-
* 기준 상자를 고친 것이 **이미 놓인 인스턴스에 무엇을 하나** — 고친 칸 바로 아래에서 말한다.
|
|
111
|
-
*
|
|
112
|
-
* 막는 것과 알리는 것을 가른다. 비율이 달라지면 놓인 것이 찌그러지므로 발행이 막히고, 크기만
|
|
113
|
-
* 달라지는 것은 실척이 어긋날 뿐이라 알리기만 한다. 까닭은 형식이 적은 것을 그대로 옮긴다 —
|
|
114
|
-
* 여기서 다시 쓰면 두 벌이 되고 곧 갈린다.
|
|
115
|
-
*/
|
|
116
|
-
private renderBaseContract;
|
|
117
|
-
private resizeBase;
|
|
118
|
-
/** 부품 전부를 감싸는 가장 작은 상자로. 맞출 것이 없으면 아무 일도 안 한다. */
|
|
119
|
-
private fitBaseToParts;
|
|
120
|
-
private setJointType;
|
|
121
|
-
private setJointAxis;
|
|
122
|
-
private tellDraft;
|
|
123
|
-
/**
|
|
124
|
-
* 역할 하나를 켜고 끈다.
|
|
125
|
-
*
|
|
126
|
-
* **여럿을 함께 맡을 수 있다.** AGV 의 상판은 물건을 놓는 자리이면서 그 자리로 물건이
|
|
127
|
-
* 들어오고 나간다. 그래서 하나를 고르는 선택 상자가 아니라 확인 상자다.
|
|
128
|
-
*
|
|
129
|
-
* 마지막 역할을 끄면 `capability` 를 통째로 지운다. 빈 배열을 남기면 형식이 오류로 보고,
|
|
130
|
-
* 저작자가 보기에는 아무 역할도 없는 평범한 부품인데 발행이 막힌다.
|
|
131
|
-
*/
|
|
132
|
-
private toggleRole;
|
|
133
|
-
private setAccepts;
|
|
134
|
-
private setCapacity;
|
|
135
|
-
/**
|
|
136
|
-
* 도형 자체 — 이름과 타입.
|
|
137
|
-
*
|
|
138
|
-
* ## 왜 머리줄이 아니라 여기인가
|
|
139
|
-
*
|
|
140
|
-
* 저작면 위에 줄을 하나 더 두고 이름 칸을 놓았었다. 앱에서는 셸이 페이지 제목으로 그 이름을
|
|
141
|
-
* 이미 그리므로 같은 글자가 두 번 나오고, 캔버스가 주인공인 화면에서 그 줄만큼 높이를 잃었다.
|
|
142
|
-
* 속성 패널은 「이 도형이 무엇인가」를 다루는 자리이므로 이름도 여기 산다.
|
|
143
|
-
*
|
|
144
|
-
* ## 타입은 읽기만 한다
|
|
145
|
-
*
|
|
146
|
-
* 저장되는 식별자다. 배치된 도면이 이 이름으로 타입을 찾으므로 만든 뒤에는 못 바꾼다.
|
|
147
|
-
*/
|
|
148
|
-
private renderFigure;
|
|
149
|
-
/**
|
|
150
|
-
* 태그 줄을 목록으로.
|
|
151
|
-
*
|
|
152
|
-
* 쉼표로 가르고 `#` 은 떼어 낸다 — 사람은 `#반출` 이라고 적고, 저장되는 것은 `반출` 이다.
|
|
153
|
-
* 겹친 것은 한 번만 남긴다. 빈 줄은 **빈 배열**이지 `undefined` 가 아니다 — 전부 지우려는
|
|
154
|
-
* 저작자가 지울 방법을 잃지 않게.
|
|
155
|
-
*/
|
|
156
|
-
private tellTags;
|
|
157
|
-
/** 카탈로그 값이 바뀌었다고 알린다. 정본은 저작면이 든다 — 여기서는 알리기만 한다. */
|
|
158
|
-
private tellCatalog;
|
|
159
|
-
/**
|
|
160
|
-
* 3D 배치 기준면을 바꾼다 ('floor' | 'ceiling' | 'center').
|
|
161
|
-
*
|
|
162
|
-
* **부품은 건드리지 않는다.** 이 값은 「이 종류는 어느 면에 붙는가」를 말할 뿐이고,
|
|
163
|
-
* 저작한 모양은 그것과 무관하다. 형식이 부품을 상자 중심에서 재므로, 배치가 달라도
|
|
164
|
-
* `parts` 는 한 글자도 안 바뀐다.
|
|
165
|
-
*
|
|
166
|
-
* 한동안 여기서 `zPos` 를 다시 계산했다. 편집 캔버스가 이 값을 씬의 좌표 모드로
|
|
167
|
-
* 흘려보내던 때의 일인데, 그러면 배치를 고를 때마다 저작자가 적어 둔 높이가 전부
|
|
168
|
-
* 다른 숫자로 보였다 — 저장되는 것은 그대로인데. 좌표 모드는 이제 보기 설정이고
|
|
169
|
-
* (`figure-view.ts`), 편집 캔버스는 늘 상자 기준이다.
|
|
170
|
-
*/
|
|
171
|
-
private setPlacement;
|
|
172
|
-
private renderIdentity;
|
|
173
|
-
private renderPlacement;
|
|
174
|
-
/** 분할 수와 모서리 굴림 — 해당하는 도형에만 낸다. */
|
|
175
|
-
private renderShape;
|
|
176
|
-
/**
|
|
177
|
-
* 민 단면 — 모서리와 **속을 파는 두께.**
|
|
178
|
-
*
|
|
179
|
-
* 벽 두께를 0 으로 두면 통짜다. 0 보다 크면 그만큼 안으로 들어온 테가 생기고, 그것이
|
|
180
|
-
* 트레이 · 토트 · 통 · 케이스가 되는 자리다. 바닥은 비워 두면 벽과 같고, 0 으로 두면
|
|
181
|
-
* 위아래가 다 뚫린 테두리가 된다.
|
|
182
|
-
*/
|
|
183
|
-
private renderExtruded;
|
|
184
|
-
/**
|
|
185
|
-
* 분할 수 — 모양과 무게를 함께 고른다.
|
|
186
|
-
*
|
|
187
|
-
* 삼각형 수는 화면이 셈하지 않는다. `trianglesOf` 에 그 분할 수를 가진 부품을 주고
|
|
188
|
-
* 물어본다 — 화면이 제 나름의 공식을 들면 figure-model 이 규칙을 바꿔도 화면만
|
|
189
|
-
* 옛 답을 계속 낸다.
|
|
190
|
-
*/
|
|
191
|
-
/**
|
|
192
|
-
* 원통을 원통으로 둘까 — **고르는 값이고, 값을 치른다.**
|
|
193
|
-
*
|
|
194
|
-
* 인스턴스가 축마다 다른 배율을 받으면 원기둥이 타원 기둥이 된다. 지키려면 제 변환이
|
|
195
|
-
* 있어야 하고, 합친 형상은 변환을 하나만 받으므로 지키는 곡면 부품 하나가 draw call
|
|
196
|
-
* 하나다. 저작자가 그 대가를 모르고 고르면 안 되므로 그 자리에 적는다.
|
|
197
|
-
*/
|
|
198
|
-
private renderKeepRound;
|
|
199
|
-
private renderSegments;
|
|
200
|
-
/**
|
|
201
|
-
* 분할 수의 실루엣.
|
|
202
|
-
*
|
|
203
|
-
* 곡면 프리미티브를 위에서 본 윤곽이 정확히 정n각형이다 — 원기둥의 단면도, 구의
|
|
204
|
-
* 적도도. 그림을 지어내는 것이 아니라 실제로 만들어지는 모양이다.
|
|
205
|
-
*/
|
|
206
|
-
private silhouette;
|
|
207
|
-
/** 견본 한 줄. 무리마다 부른다. */
|
|
208
|
-
private palettePurpose;
|
|
209
|
-
private swatches;
|
|
210
|
-
private renderMaterial;
|
|
211
|
-
/**
|
|
212
|
-
* 인스턴스 크기가 바뀔 때 이 부품이 어떻게 변하나.
|
|
213
|
-
*
|
|
214
|
-
* ## 늘어나는 축은 아직 못 보여 준다
|
|
215
|
-
*
|
|
216
|
-
* `stretch` 는 형식에 축을 적는 자리가 없어서 그리는 쪽이 **가장 길게 뻗은 축**으로
|
|
217
|
-
* 정한다. 그 답을 화면에 적어 주려면 규칙을 가진 쪽에 물어야 하는데, 그 함수
|
|
218
|
-
* (`stretchAxisOf` · `stretchAxis`)가 아직 배포된 판에 없다.
|
|
219
|
-
*
|
|
220
|
-
* 화면이 제 나름대로 계산하지 않는다. 규칙이 두 벌이 되면 보이는 축과 실제로 늘어나는
|
|
221
|
-
* 축이 갈리고, 그 어긋남은 화면을 믿게 만든 다음에 드러난다. 배포되면 잇는다.
|
|
222
|
-
*
|
|
223
|
-
* ## 값이 있는 것을 밝힌다
|
|
224
|
-
*
|
|
225
|
-
* `scale` 이 아닌 부품은 합쳐 그릴 수 없어 draw call 을 하나 더 쓴다. 그 비용이
|
|
226
|
-
* 성숙도의 묶음 수에 그대로 잡힌다. 고르는 자리에서 미리 말해 준다.
|
|
227
|
-
*/
|
|
228
|
-
private renderBehaviour;
|
|
229
|
-
/**
|
|
230
|
-
* ── 몇 개가 되나 ──────────────────────────────────────────────────────────
|
|
231
|
-
*
|
|
232
|
-
* 저작 화면은 축과 피치만 받고 있었다. 형식이 가진 반복 설정이 그 둘뿐이므로 편집할 것은
|
|
233
|
-
* 다 있었는데, **결과인 개수를 어디에도 표시하지 않았다.** 피치 300 을 적은 저작자가 몇 개가
|
|
234
|
-
* 되는지 알려면 미리보기를 세어야 했다.
|
|
235
|
-
*
|
|
236
|
-
* 개수는 그리는 쪽이 쓰는 `repeatPlan` 을 그대로 불러 얻는다. 여기서 다시 계산하면 화면이
|
|
237
|
-
* 말하는 개수와 실제로 그려지는 개수가 달라진다.
|
|
238
|
-
*
|
|
239
|
-
* ## 두 가지 반복이 있다
|
|
240
|
-
*
|
|
241
|
-
* 컨베이어의 롤러는 길어지면 **개수가 늘고** 한 칸 간격은 그대로다. 셀트레이의 셀은 커지면
|
|
242
|
-
* **셀이 커지고** 개수는 그대로다 — 몇 셀짜리 트레이냐는 화면 크기와 무관하다. 그 갈림을
|
|
243
|
-
* 이 축의 anchor 가 정하는데 화면에는 그 말이 없었다. 그래서 어느 쪽인지 함께 적는다.
|
|
244
|
-
*/
|
|
245
|
-
private renderRepeatCount;
|
|
246
|
-
/**
|
|
247
|
-
* ── 어느 면을 붙잡나 ──────────────────────────────────────────────────────
|
|
248
|
-
*
|
|
249
|
-
* **이 자리가 없었다.** 형식은 축마다 `anchor` 를 지고 다니고(`figure-source.ts` 가 왕복시킨다),
|
|
250
|
-
* 발행 게이트는 「valve-wheel 의 anchor.z 를 max 로 두라」고 사유까지 말하는데, 저작면에는 그
|
|
251
|
-
* 값을 바꿀 자리가 없었다 — 고치라는 말만 있고 고칠 문이 없었다.
|
|
252
|
-
*
|
|
253
|
-
* ## 「자동」이 기본이다
|
|
254
|
-
*
|
|
255
|
-
* 형식에서 `anchor` 는 적지 않아도 된다. 안 적으면 **가까운 면**을 붙잡고, 표본 열넷 중 어느
|
|
256
|
-
* 것도 이 값을 적지 않고 제대로 선다. 그래서 축마다 첫 항목이 「자동」이고, 지금 자동이 무엇으로
|
|
257
|
-
* 읽히는지를 **함께 보여 준다** — 그것을 모르면 무엇을 바꾸는지 모른 채 고르게 된다.
|
|
258
|
-
*
|
|
259
|
-
* 자동이 무엇인지는 형식에게 묻는다(`anchorOfPart`). 여기서 「위 절반이면 max」를 다시 세면
|
|
260
|
-
* 화면이 말하는 면과 실제로 그려지는 면이 갈린다.
|
|
261
|
-
*
|
|
262
|
-
* ## `scale` 인 부품에도 보여 준다
|
|
263
|
-
*
|
|
264
|
-
* 처음에는 감췄다 — 형식 주석에 「`sizing` 이 `scale` 인 부품에는 뜻이 없다」고 적혀 있어서다.
|
|
265
|
-
* **그 문장은 기본값에 대한 것이다.** `anchorOf` 는 적힌 값을 가장 먼저 보고(`if (said) return
|
|
266
|
-
* said`), 그 뒤에야 `sizing` 을 본다. 즉 `scale` 부품에도 면을 적으면 그것이 이긴다.
|
|
267
|
-
*
|
|
268
|
-
* 감춰 두면 어긋남이 난다: 발행 게이트가 막는 MIXER 의 `valve-wheel` 이 `scale` 부품이고,
|
|
269
|
-
* 게이트의 사유는 「그 부품의 anchor.z 를 max 로 두라」다. 고치라는 자리에 문을 닫아 둔 셈이었다.
|
|
270
|
-
*
|
|
271
|
-
* 대신 `scale` 일 때는 자동이 무엇인지가 「함께 커진다」로 보이므로, 저작자가 그것을 바꾸는
|
|
272
|
-
* 것임을 알 수 있다.
|
|
273
|
-
*/
|
|
274
|
-
/**
|
|
275
|
-
* ── 도움말은 자리를 먹지 않는다 ─────────────────────────────────────────────
|
|
276
|
-
*
|
|
277
|
-
* 설명 문단이 열 줄 있었고 그 줄들이 패널 높이의 상당 부분이었다. 속성은 앞으로 더 늘어난다
|
|
278
|
-
* (능력 · 포트 · 애니메이션 · 기준정보) — 늘 보이는 설명은 그 자리를 먼저 먹는다.
|
|
279
|
-
*
|
|
280
|
-
* 그래서 물음표로 접는다. **지우지 않는다** — 그 문장들은 「이걸 고르면 무엇이 달라지나」를
|
|
281
|
-
* 말하는 것이고, 없으면 닫힌 목록을 고를 수 없다. 한 번 읽으면 되는 것이라 접어 두는 것이 맞다.
|
|
282
|
-
*
|
|
283
|
-
* 편 것은 **부품을 바꿔도 그대로 둔다**(`opened` 는 부품에 딸린 상태가 아니다). 같은 것을
|
|
284
|
-
* 계속 고치는 사람이 매번 다시 펴야 하면 접은 것이 되레 방해가 된다.
|
|
285
|
-
*/
|
|
286
|
-
private help;
|
|
287
|
-
private helpButton;
|
|
288
|
-
private helpHint;
|
|
289
|
-
private renderAnchors;
|
|
290
|
-
/**
|
|
291
|
-
* 숫자 칸.
|
|
292
|
-
*
|
|
293
|
-
* 빈 칸이나 글자를 넣었을 때 0 으로 바꿔치지 않는다 — 저작자가 지우는 중일 수 있고,
|
|
294
|
-
* 조용히 0 이 되면 부품이 사라진 것처럼 보인다. 숫자가 아니면 그냥 안 받는다.
|
|
295
|
-
*/
|
|
296
|
-
private number;
|
|
297
|
-
/**
|
|
298
|
-
* 도형을 바꾼다.
|
|
299
|
-
*
|
|
300
|
-
* 도형이 바뀌면 그 도형에 뜻 없는 값이 남는다. 남겨 두면 검증이 「무시됨」 위반을
|
|
301
|
-
* 내므로 여기서 걷는다.
|
|
302
|
-
*/
|
|
303
|
-
private changePrimitive;
|
|
304
|
-
private put;
|
|
305
|
-
private putTransform;
|
|
306
|
-
/**
|
|
307
|
-
* 발광 세기를 고친다. **0 이면 블록을 통째로 지운다.**
|
|
308
|
-
*
|
|
309
|
-
* 세기 0 인 발광을 남겨 두면 「안 빛나는데 램프인 것」이 되어, 재질 키가 갈려 묶음이
|
|
310
|
-
* 헛되이 하나 는다. 0 은 「램프가 아니다」로 읽는 것이 맞다.
|
|
311
|
-
*
|
|
312
|
-
* `Number(value) || undefined` 를 쓰면 안 된다 — 0 이 falsy 라 변경으로 안 잡혀 옛
|
|
313
|
-
* 값이 그대로 남는다. 실제로 램프가 안 꺼졌다.
|
|
314
|
-
*/
|
|
315
|
-
private putEmissive;
|
|
316
|
-
private putMaterial;
|
|
317
|
-
/**
|
|
318
|
-
* 수정한 것을 씬 모델로 되돌려 알린다.
|
|
319
|
-
*
|
|
320
|
-
* 사용자는 X·Y·Z 로 수정하고, 모델러 페이지는 씬 모델을 갖는다. 그 사이를 여기서
|
|
321
|
-
* 잇는다 — 변환해서 수정하고 다시 되돌린다. **왕복 변환이 무손실이라야** 위치 하나
|
|
322
|
-
* 고쳤을 뿐인데 회전값이 조금씩 밀리는 일이 없다(`fold.test.ts` 가 이를 확인한다).
|
|
323
|
-
*/
|
|
324
|
-
private change;
|
|
325
|
-
/** 정밀 도구를 시킨다. 정본은 저작면이 갖는다 — 여기서는 알리기만 한다. */
|
|
326
|
-
private ask;
|
|
327
|
-
private emit;
|
|
328
|
-
}
|
|
329
|
-
export {};
|